Snii.java

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: snii.proto

package doris.snii;

public final class Snii {
  private Snii() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * Logical index kinds. INVERTED keeps the existing three-blob contract; blob
   * kinds carry an opaque named-file table instead. The `kind` field below is
   * deliberately uint32 (not this enum type): proto2 drops unknown enum values
   * into unknown fields, which would make a future kind indistinguishable from
   * an absent one instead of a clean Unsupported.
   * </pre>
   *
   * Protobuf enum {@code doris.snii.SniiLogicalIndexKindPB}
   */
  public enum SniiLogicalIndexKindPB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * default: SNII text inverted index
     * </pre>
     *
     * <code>SNII_KIND_INVERTED = 0;</code>
     */
    SNII_KIND_INVERTED(0),
    /**
     * <pre>
     * opaque CLucene BKD blobs
     * </pre>
     *
     * <code>SNII_KIND_BKD = 1;</code>
     */
    SNII_KIND_BKD(1),
    /**
     * <pre>
     * opaque faiss blobs
     * </pre>
     *
     * <code>SNII_KIND_ANN = 2;</code>
     */
    SNII_KIND_ANN(2),
    ;

    /**
     * <pre>
     * default: SNII text inverted index
     * </pre>
     *
     * <code>SNII_KIND_INVERTED = 0;</code>
     */
    public static final int SNII_KIND_INVERTED_VALUE = 0;
    /**
     * <pre>
     * opaque CLucene BKD blobs
     * </pre>
     *
     * <code>SNII_KIND_BKD = 1;</code>
     */
    public static final int SNII_KIND_BKD_VALUE = 1;
    /**
     * <pre>
     * opaque faiss blobs
     * </pre>
     *
     * <code>SNII_KIND_ANN = 2;</code>
     */
    public static final int SNII_KIND_ANN_VALUE = 2;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SniiLogicalIndexKindPB valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SniiLogicalIndexKindPB forNumber(int value) {
      switch (value) {
        case 0: return SNII_KIND_INVERTED;
        case 1: return SNII_KIND_BKD;
        case 2: return SNII_KIND_ANN;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SniiLogicalIndexKindPB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SniiLogicalIndexKindPB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SniiLogicalIndexKindPB>() {
            public SniiLogicalIndexKindPB findValueByNumber(int number) {
              return SniiLogicalIndexKindPB.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return doris.snii.Snii.getDescriptor().getEnumTypes().get(0);
    }

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

    public static SniiLogicalIndexKindPB valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SniiLogicalIndexKindPB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.snii.SniiLogicalIndexKindPB)
  }

  public interface SniiMetadataDirectoryPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiMetadataDirectoryPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @return A list containing the requiredFeatures.
     */
    java.util.List<java.lang.Integer> getRequiredFeaturesList();
    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @return The count of requiredFeatures.
     */
    int getRequiredFeaturesCount();
    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The requiredFeatures at the given index.
     */
    int getRequiredFeatures(int index);

    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB> 
        getIndexesList();
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    doris.snii.Snii.SniiLogicalIndexMetadataPB getIndexes(int index);
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    int getIndexesCount();
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    java.util.List<? extends doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder> 
        getIndexesOrBuilderList();
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder getIndexesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code doris.snii.SniiMetadataDirectoryPB}
   */
  public static final class SniiMetadataDirectoryPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiMetadataDirectoryPB)
      SniiMetadataDirectoryPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiMetadataDirectoryPB.newBuilder() to construct.
    private SniiMetadataDirectoryPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiMetadataDirectoryPB() {
      requiredFeatures_ = emptyIntList();
      indexes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiMetadataDirectoryPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiMetadataDirectoryPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiMetadataDirectoryPB.class, doris.snii.Snii.SniiMetadataDirectoryPB.Builder.class);
    }

    public static final int REQUIRED_FEATURES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList requiredFeatures_ =
        emptyIntList();
    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @return A list containing the requiredFeatures.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getRequiredFeaturesList() {
      return requiredFeatures_;
    }
    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @return The count of requiredFeatures.
     */
    public int getRequiredFeaturesCount() {
      return requiredFeatures_.size();
    }
    /**
     * <pre>
     * Known values: 1 = blob logical index entries are present (set iff any
     * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
     * known values and reject everything else as Unsupported.
     * </pre>
     *
     * <code>repeated uint32 required_features = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The requiredFeatures at the given index.
     */
    public int getRequiredFeatures(int index) {
      return requiredFeatures_.getInt(index);
    }
    private int requiredFeaturesMemoizedSerializedSize = -1;

    public static final int INDEXES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB> indexes_;
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    @java.lang.Override
    public java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB> getIndexesList() {
      return indexes_;
    }
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder> 
        getIndexesOrBuilderList() {
      return indexes_;
    }
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    @java.lang.Override
    public int getIndexesCount() {
      return indexes_.size();
    }
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiLogicalIndexMetadataPB getIndexes(int index) {
      return indexes_.get(index);
    }
    /**
     * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder getIndexesOrBuilder(
        int index) {
      return indexes_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getRequiredFeaturesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(requiredFeaturesMemoizedSerializedSize);
      }
      for (int i = 0; i < requiredFeatures_.size(); i++) {
        output.writeUInt32NoTag(requiredFeatures_.getInt(i));
      }
      for (int i = 0; i < indexes_.size(); i++) {
        output.writeMessage(2, indexes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < requiredFeatures_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(requiredFeatures_.getInt(i));
        }
        size += dataSize;
        if (!getRequiredFeaturesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        requiredFeaturesMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < indexes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, indexes_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiMetadataDirectoryPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiMetadataDirectoryPB other = (doris.snii.Snii.SniiMetadataDirectoryPB) obj;

      if (!getRequiredFeaturesList()
          .equals(other.getRequiredFeaturesList())) return false;
      if (!getIndexesList()
          .equals(other.getIndexesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRequiredFeaturesCount() > 0) {
        hash = (37 * hash) + REQUIRED_FEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredFeaturesList().hashCode();
      }
      if (getIndexesCount() > 0) {
        hash = (37 * hash) + INDEXES_FIELD_NUMBER;
        hash = (53 * hash) + getIndexesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiMetadataDirectoryPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiMetadataDirectoryPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiMetadataDirectoryPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiMetadataDirectoryPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.snii.SniiMetadataDirectoryPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiMetadataDirectoryPB)
        doris.snii.Snii.SniiMetadataDirectoryPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiMetadataDirectoryPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiMetadataDirectoryPB.class, doris.snii.Snii.SniiMetadataDirectoryPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiMetadataDirectoryPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        requiredFeatures_ = emptyIntList();
        if (indexesBuilder_ == null) {
          indexes_ = java.util.Collections.emptyList();
        } else {
          indexes_ = null;
          indexesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiMetadataDirectoryPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiMetadataDirectoryPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiMetadataDirectoryPB build() {
        doris.snii.Snii.SniiMetadataDirectoryPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiMetadataDirectoryPB buildPartial() {
        doris.snii.Snii.SniiMetadataDirectoryPB result = new doris.snii.Snii.SniiMetadataDirectoryPB(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(doris.snii.Snii.SniiMetadataDirectoryPB result) {
        if (indexesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            indexes_ = java.util.Collections.unmodifiableList(indexes_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.indexes_ = indexes_;
        } else {
          result.indexes_ = indexesBuilder_.build();
        }
      }

      private void buildPartial0(doris.snii.Snii.SniiMetadataDirectoryPB result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          requiredFeatures_.makeImmutable();
          result.requiredFeatures_ = requiredFeatures_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiMetadataDirectoryPB) {
          return mergeFrom((doris.snii.Snii.SniiMetadataDirectoryPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiMetadataDirectoryPB other) {
        if (other == doris.snii.Snii.SniiMetadataDirectoryPB.getDefaultInstance()) return this;
        if (!other.requiredFeatures_.isEmpty()) {
          if (requiredFeatures_.isEmpty()) {
            requiredFeatures_ = other.requiredFeatures_;
            requiredFeatures_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureRequiredFeaturesIsMutable();
            requiredFeatures_.addAll(other.requiredFeatures_);
          }
          onChanged();
        }
        if (indexesBuilder_ == null) {
          if (!other.indexes_.isEmpty()) {
            if (indexes_.isEmpty()) {
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureIndexesIsMutable();
              indexes_.addAll(other.indexes_);
            }
            onChanged();
          }
        } else {
          if (!other.indexes_.isEmpty()) {
            if (indexesBuilder_.isEmpty()) {
              indexesBuilder_.dispose();
              indexesBuilder_ = null;
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000002);
              indexesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getIndexesFieldBuilder() : null;
            } else {
              indexesBuilder_.addAllMessages(other.indexes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readUInt32();
                ensureRequiredFeaturesIsMutable();
                requiredFeatures_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureRequiredFeaturesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  requiredFeatures_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 18: {
                doris.snii.Snii.SniiLogicalIndexMetadataPB m =
                    input.readMessage(
                        doris.snii.Snii.SniiLogicalIndexMetadataPB.PARSER,
                        extensionRegistry);
                if (indexesBuilder_ == null) {
                  ensureIndexesIsMutable();
                  indexes_.add(m);
                } else {
                  indexesBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList requiredFeatures_ = emptyIntList();
      private void ensureRequiredFeaturesIsMutable() {
        if (!requiredFeatures_.isModifiable()) {
          requiredFeatures_ = makeMutableCopy(requiredFeatures_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @return A list containing the requiredFeatures.
       */
      public java.util.List<java.lang.Integer>
          getRequiredFeaturesList() {
        requiredFeatures_.makeImmutable();
        return requiredFeatures_;
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @return The count of requiredFeatures.
       */
      public int getRequiredFeaturesCount() {
        return requiredFeatures_.size();
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The requiredFeatures at the given index.
       */
      public int getRequiredFeatures(int index) {
        return requiredFeatures_.getInt(index);
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The requiredFeatures to set.
       * @return This builder for chaining.
       */
      public Builder setRequiredFeatures(
          int index, int value) {

        ensureRequiredFeaturesIsMutable();
        requiredFeatures_.setInt(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @param value The requiredFeatures to add.
       * @return This builder for chaining.
       */
      public Builder addRequiredFeatures(int value) {

        ensureRequiredFeaturesIsMutable();
        requiredFeatures_.addInt(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @param values The requiredFeatures to add.
       * @return This builder for chaining.
       */
      public Builder addAllRequiredFeatures(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRequiredFeaturesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, requiredFeatures_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Known values: 1 = blob logical index entries are present (set iff any
       * entry has kind != SNII_KIND_INVERTED). Readers accept a whitelist of
       * known values and reject everything else as Unsupported.
       * </pre>
       *
       * <code>repeated uint32 required_features = 1 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearRequiredFeatures() {
        requiredFeatures_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB> indexes_ =
        java.util.Collections.emptyList();
      private void ensureIndexesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          indexes_ = new java.util.ArrayList<doris.snii.Snii.SniiLogicalIndexMetadataPB>(indexes_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.snii.Snii.SniiLogicalIndexMetadataPB, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder, doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder> indexesBuilder_;

      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB> getIndexesList() {
        if (indexesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexes_);
        } else {
          return indexesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public int getIndexesCount() {
        if (indexesBuilder_ == null) {
          return indexes_.size();
        } else {
          return indexesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public doris.snii.Snii.SniiLogicalIndexMetadataPB getIndexes(int index) {
        if (indexesBuilder_ == null) {
          return indexes_.get(index);
        } else {
          return indexesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder setIndexes(
          int index, doris.snii.Snii.SniiLogicalIndexMetadataPB value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.set(index, value);
          onChanged();
        } else {
          indexesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder setIndexes(
          int index, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder addIndexes(doris.snii.Snii.SniiLogicalIndexMetadataPB value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.add(value);
          onChanged();
        } else {
          indexesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder addIndexes(
          int index, doris.snii.Snii.SniiLogicalIndexMetadataPB value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.add(index, value);
          onChanged();
        } else {
          indexesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder addIndexes(
          doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.add(builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder addIndexes(
          int index, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder addAllIndexes(
          java.lang.Iterable<? extends doris.snii.Snii.SniiLogicalIndexMetadataPB> values) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexes_);
          onChanged();
        } else {
          indexesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder clearIndexes() {
        if (indexesBuilder_ == null) {
          indexes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          indexesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public Builder removeIndexes(int index) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.remove(index);
          onChanged();
        } else {
          indexesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder getIndexesBuilder(
          int index) {
        return getIndexesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder getIndexesOrBuilder(
          int index) {
        if (indexesBuilder_ == null) {
          return indexes_.get(index);  } else {
          return indexesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public java.util.List<? extends doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder> 
           getIndexesOrBuilderList() {
        if (indexesBuilder_ != null) {
          return indexesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexes_);
        }
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder addIndexesBuilder() {
        return getIndexesFieldBuilder().addBuilder(
            doris.snii.Snii.SniiLogicalIndexMetadataPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder addIndexesBuilder(
          int index) {
        return getIndexesFieldBuilder().addBuilder(
            index, doris.snii.Snii.SniiLogicalIndexMetadataPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.snii.SniiLogicalIndexMetadataPB indexes = 2;</code>
       */
      public java.util.List<doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder> 
           getIndexesBuilderList() {
        return getIndexesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.snii.Snii.SniiLogicalIndexMetadataPB, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder, doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder> 
          getIndexesFieldBuilder() {
        if (indexesBuilder_ == null) {
          indexesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.snii.Snii.SniiLogicalIndexMetadataPB, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder, doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder>(
                  indexes_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          indexes_ = null;
        }
        return indexesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiMetadataDirectoryPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiMetadataDirectoryPB)
    private static final doris.snii.Snii.SniiMetadataDirectoryPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiMetadataDirectoryPB();
    }

    public static doris.snii.Snii.SniiMetadataDirectoryPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiMetadataDirectoryPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiMetadataDirectoryPB>() {
      @java.lang.Override
      public SniiMetadataDirectoryPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiMetadataDirectoryPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiMetadataDirectoryPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiMetadataDirectoryPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiNamedBlobPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiNamedBlobPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * e.g. "bkd_meta", "ann.faiss"
     * </pre>
     *
     * <code>optional bytes name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * e.g. "bkd_meta", "ann.faiss"
     * </pre>
     *
     * <code>optional bytes name = 1;</code>
     * @return The name.
     */
    com.google.protobuf.ByteString getName();

    /**
     * <code>optional uint64 offset = 2;</code>
     * @return Whether the offset field is set.
     */
    boolean hasOffset();
    /**
     * <code>optional uint64 offset = 2;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <pre>
     * may be 0
     * </pre>
     *
     * <code>optional uint64 length = 3;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <pre>
     * may be 0
     * </pre>
     *
     * <code>optional uint64 length = 3;</code>
     * @return The length.
     */
    long getLength();

    /**
     * <pre>
     * Whole-blob checksum, recorded by the writer. NOT verified on the read
     * path: a blob is served through random-access reads, so a whole-file
     * verification would defeat the point, and BKD/faiss both carry their own
     * structural checks. It exists so an offline inspect/fsck tool (and the
     * writer's own unit tests) can distinguish "container bytes rotted" from
     * "reader is buggy". No such tool exists yet.
     * </pre>
     *
     * <code>optional uint32 crc32c = 4;</code>
     * @return Whether the crc32c field is set.
     */
    boolean hasCrc32C();
    /**
     * <pre>
     * Whole-blob checksum, recorded by the writer. NOT verified on the read
     * path: a blob is served through random-access reads, so a whole-file
     * verification would defeat the point, and BKD/faiss both carry their own
     * structural checks. It exists so an offline inspect/fsck tool (and the
     * writer's own unit tests) can distinguish "container bytes rotted" from
     * "reader is buggy". No such tool exists yet.
     * </pre>
     *
     * <code>optional uint32 crc32c = 4;</code>
     * @return The crc32c.
     */
    int getCrc32C();
  }
  /**
   * <pre>
   * One opaque sub-file of a blob logical index. Offsets are absolute file
   * offsets into the container. NOTE: length may legitimately be 0 (an empty
   * BKD segment writes 0-byte `bkd` / `bkd_index`); this deliberately differs
   * from SniiBlobRefPB, whose length==0 is Corruption.
   * </pre>
   *
   * Protobuf type {@code doris.snii.SniiNamedBlobPB}
   */
  public static final class SniiNamedBlobPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiNamedBlobPB)
      SniiNamedBlobPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiNamedBlobPB.newBuilder() to construct.
    private SniiNamedBlobPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiNamedBlobPB() {
      name_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiNamedBlobPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiNamedBlobPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiNamedBlobPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiNamedBlobPB.class, doris.snii.Snii.SniiNamedBlobPB.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString name_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * e.g. "bkd_meta", "ann.faiss"
     * </pre>
     *
     * <code>optional bytes name = 1;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * e.g. "bkd_meta", "ann.faiss"
     * </pre>
     *
     * <code>optional bytes name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getName() {
      return name_;
    }

    public static final int OFFSET_FIELD_NUMBER = 2;
    private long offset_ = 0L;
    /**
     * <code>optional uint64 offset = 2;</code>
     * @return Whether the offset field is set.
     */
    @java.lang.Override
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint64 offset = 2;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int LENGTH_FIELD_NUMBER = 3;
    private long length_ = 0L;
    /**
     * <pre>
     * may be 0
     * </pre>
     *
     * <code>optional uint64 length = 3;</code>
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * may be 0
     * </pre>
     *
     * <code>optional uint64 length = 3;</code>
     * @return The length.
     */
    @java.lang.Override
    public long getLength() {
      return length_;
    }

    public static final int CRC32C_FIELD_NUMBER = 4;
    private int crc32C_ = 0;
    /**
     * <pre>
     * Whole-blob checksum, recorded by the writer. NOT verified on the read
     * path: a blob is served through random-access reads, so a whole-file
     * verification would defeat the point, and BKD/faiss both carry their own
     * structural checks. It exists so an offline inspect/fsck tool (and the
     * writer's own unit tests) can distinguish "container bytes rotted" from
     * "reader is buggy". No such tool exists yet.
     * </pre>
     *
     * <code>optional uint32 crc32c = 4;</code>
     * @return Whether the crc32c field is set.
     */
    @java.lang.Override
    public boolean hasCrc32C() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Whole-blob checksum, recorded by the writer. NOT verified on the read
     * path: a blob is served through random-access reads, so a whole-file
     * verification would defeat the point, and BKD/faiss both carry their own
     * structural checks. It exists so an offline inspect/fsck tool (and the
     * writer's own unit tests) can distinguish "container bytes rotted" from
     * "reader is buggy". No such tool exists yet.
     * </pre>
     *
     * <code>optional uint32 crc32c = 4;</code>
     * @return The crc32c.
     */
    @java.lang.Override
    public int getCrc32C() {
      return crc32C_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, offset_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt64(3, length_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, crc32C_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, offset_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, length_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, crc32C_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiNamedBlobPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiNamedBlobPB other = (doris.snii.Snii.SniiNamedBlobPB) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasOffset() != other.hasOffset()) return false;
      if (hasOffset()) {
        if (getOffset()
            != other.getOffset()) return false;
      }
      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (getLength()
            != other.getLength()) return false;
      }
      if (hasCrc32C() != other.hasCrc32C()) return false;
      if (hasCrc32C()) {
        if (getCrc32C()
            != other.getCrc32C()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasOffset()) {
        hash = (37 * hash) + OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getOffset());
      }
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getLength());
      }
      if (hasCrc32C()) {
        hash = (37 * hash) + CRC32C_FIELD_NUMBER;
        hash = (53 * hash) + getCrc32C();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiNamedBlobPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiNamedBlobPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiNamedBlobPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiNamedBlobPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * One opaque sub-file of a blob logical index. Offsets are absolute file
     * offsets into the container. NOTE: length may legitimately be 0 (an empty
     * BKD segment writes 0-byte `bkd` / `bkd_index`); this deliberately differs
     * from SniiBlobRefPB, whose length==0 is Corruption.
     * </pre>
     *
     * Protobuf type {@code doris.snii.SniiNamedBlobPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiNamedBlobPB)
        doris.snii.Snii.SniiNamedBlobPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiNamedBlobPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiNamedBlobPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiNamedBlobPB.class, doris.snii.Snii.SniiNamedBlobPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiNamedBlobPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = com.google.protobuf.ByteString.EMPTY;
        offset_ = 0L;
        length_ = 0L;
        crc32C_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiNamedBlobPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiNamedBlobPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiNamedBlobPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiNamedBlobPB build() {
        doris.snii.Snii.SniiNamedBlobPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiNamedBlobPB buildPartial() {
        doris.snii.Snii.SniiNamedBlobPB result = new doris.snii.Snii.SniiNamedBlobPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiNamedBlobPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.offset_ = offset_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.length_ = length_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.crc32C_ = crc32C_;
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiNamedBlobPB) {
          return mergeFrom((doris.snii.Snii.SniiNamedBlobPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiNamedBlobPB other) {
        if (other == doris.snii.Snii.SniiNamedBlobPB.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (other.hasLength()) {
          setLength(other.getLength());
        }
        if (other.hasCrc32C()) {
          setCrc32C(other.getCrc32C());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                offset_ = input.readUInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                length_ = input.readUInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                crc32C_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString name_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * e.g. "bkd_meta", "ann.faiss"
       * </pre>
       *
       * <code>optional bytes name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * e.g. "bkd_meta", "ann.faiss"
       * </pre>
       *
       * <code>optional bytes name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getName() {
        return name_;
      }
      /**
       * <pre>
       * e.g. "bkd_meta", "ann.faiss"
       * </pre>
       *
       * <code>optional bytes name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * e.g. "bkd_meta", "ann.faiss"
       * </pre>
       *
       * <code>optional bytes name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }

      private long offset_ ;
      /**
       * <code>optional uint64 offset = 2;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint64 offset = 2;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <code>optional uint64 offset = 2;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {

        offset_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 offset = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000002);
        offset_ = 0L;
        onChanged();
        return this;
      }

      private long length_ ;
      /**
       * <pre>
       * may be 0
       * </pre>
       *
       * <code>optional uint64 length = 3;</code>
       * @return Whether the length field is set.
       */
      @java.lang.Override
      public boolean hasLength() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * may be 0
       * </pre>
       *
       * <code>optional uint64 length = 3;</code>
       * @return The length.
       */
      @java.lang.Override
      public long getLength() {
        return length_;
      }
      /**
       * <pre>
       * may be 0
       * </pre>
       *
       * <code>optional uint64 length = 3;</code>
       * @param value The length to set.
       * @return This builder for chaining.
       */
      public Builder setLength(long value) {

        length_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * may be 0
       * </pre>
       *
       * <code>optional uint64 length = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000004);
        length_ = 0L;
        onChanged();
        return this;
      }

      private int crc32C_ ;
      /**
       * <pre>
       * Whole-blob checksum, recorded by the writer. NOT verified on the read
       * path: a blob is served through random-access reads, so a whole-file
       * verification would defeat the point, and BKD/faiss both carry their own
       * structural checks. It exists so an offline inspect/fsck tool (and the
       * writer's own unit tests) can distinguish "container bytes rotted" from
       * "reader is buggy". No such tool exists yet.
       * </pre>
       *
       * <code>optional uint32 crc32c = 4;</code>
       * @return Whether the crc32c field is set.
       */
      @java.lang.Override
      public boolean hasCrc32C() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Whole-blob checksum, recorded by the writer. NOT verified on the read
       * path: a blob is served through random-access reads, so a whole-file
       * verification would defeat the point, and BKD/faiss both carry their own
       * structural checks. It exists so an offline inspect/fsck tool (and the
       * writer's own unit tests) can distinguish "container bytes rotted" from
       * "reader is buggy". No such tool exists yet.
       * </pre>
       *
       * <code>optional uint32 crc32c = 4;</code>
       * @return The crc32c.
       */
      @java.lang.Override
      public int getCrc32C() {
        return crc32C_;
      }
      /**
       * <pre>
       * Whole-blob checksum, recorded by the writer. NOT verified on the read
       * path: a blob is served through random-access reads, so a whole-file
       * verification would defeat the point, and BKD/faiss both carry their own
       * structural checks. It exists so an offline inspect/fsck tool (and the
       * writer's own unit tests) can distinguish "container bytes rotted" from
       * "reader is buggy". No such tool exists yet.
       * </pre>
       *
       * <code>optional uint32 crc32c = 4;</code>
       * @param value The crc32c to set.
       * @return This builder for chaining.
       */
      public Builder setCrc32C(int value) {

        crc32C_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whole-blob checksum, recorded by the writer. NOT verified on the read
       * path: a blob is served through random-access reads, so a whole-file
       * verification would defeat the point, and BKD/faiss both carry their own
       * structural checks. It exists so an offline inspect/fsck tool (and the
       * writer's own unit tests) can distinguish "container bytes rotted" from
       * "reader is buggy". No such tool exists yet.
       * </pre>
       *
       * <code>optional uint32 crc32c = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCrc32C() {
        bitField0_ = (bitField0_ & ~0x00000008);
        crc32C_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiNamedBlobPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiNamedBlobPB)
    private static final doris.snii.Snii.SniiNamedBlobPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiNamedBlobPB();
    }

    public static doris.snii.Snii.SniiNamedBlobPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiNamedBlobPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiNamedBlobPB>() {
      @java.lang.Override
      public SniiNamedBlobPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiNamedBlobPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiNamedBlobPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiNamedBlobPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiLogicalIndexMetadataPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiLogicalIndexMetadataPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint64 index_id = 1;</code>
     * @return Whether the indexId field is set.
     */
    boolean hasIndexId();
    /**
     * <code>optional uint64 index_id = 1;</code>
     * @return The indexId.
     */
    long getIndexId();

    /**
     * <code>optional bytes index_suffix = 2;</code>
     * @return Whether the indexSuffix field is set.
     */
    boolean hasIndexSuffix();
    /**
     * <code>optional bytes index_suffix = 2;</code>
     * @return The indexSuffix.
     */
    com.google.protobuf.ByteString getIndexSuffix();

    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     * @return Whether the coreMetadata field is set.
     */
    boolean hasCoreMetadata();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     * @return The coreMetadata.
     */
    doris.snii.Snii.SniiBlobRefPB getCoreMetadata();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     */
    doris.snii.Snii.SniiBlobRefPBOrBuilder getCoreMetadataOrBuilder();

    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     * @return Whether the sampledTermIndex field is set.
     */
    boolean hasSampledTermIndex();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     * @return The sampledTermIndex.
     */
    doris.snii.Snii.SniiBlobRefPB getSampledTermIndex();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     */
    doris.snii.Snii.SniiBlobRefPBOrBuilder getSampledTermIndexOrBuilder();

    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     * @return Whether the dictBlockDirectory field is set.
     */
    boolean hasDictBlockDirectory();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     * @return The dictBlockDirectory.
     */
    doris.snii.Snii.SniiBlobRefPB getDictBlockDirectory();
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     */
    doris.snii.Snii.SniiBlobRefPBOrBuilder getDictBlockDirectoryOrBuilder();

    /**
     * <pre>
     * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
     * on INVERTED entries: proto2 presence semantics would serialize it and
     * change the bytes of every pure-text directory.
     * </pre>
     *
     * <code>optional uint32 kind = 6;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
     * on INVERTED entries: proto2 presence semantics would serialize it and
     * change the bytes of every pure-text directory.
     * </pre>
     *
     * <code>optional uint32 kind = 6;</code>
     * @return The kind.
     */
    int getKind();

    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    java.util.List<doris.snii.Snii.SniiNamedBlobPB> 
        getFilesList();
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    doris.snii.Snii.SniiNamedBlobPB getFiles(int index);
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    int getFilesCount();
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    java.util.List<? extends doris.snii.Snii.SniiNamedBlobPBOrBuilder> 
        getFilesOrBuilderList();
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    doris.snii.Snii.SniiNamedBlobPBOrBuilder getFilesOrBuilder(
        int index);

    /**
     * <pre>
     * Set when an inverted index drops postings. Omit it when false so unchanged
     * directories keep their wire bytes; rewrites use it to preserve the feature.
     * </pre>
     *
     * <code>optional bool dropped_postings = 8;</code>
     * @return Whether the droppedPostings field is set.
     */
    boolean hasDroppedPostings();
    /**
     * <pre>
     * Set when an inverted index drops postings. Omit it when false so unchanged
     * directories keep their wire bytes; rewrites use it to preserve the feature.
     * </pre>
     *
     * <code>optional bool dropped_postings = 8;</code>
     * @return The droppedPostings.
     */
    boolean getDroppedPostings();
  }
  /**
   * Protobuf type {@code doris.snii.SniiLogicalIndexMetadataPB}
   */
  public static final class SniiLogicalIndexMetadataPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiLogicalIndexMetadataPB)
      SniiLogicalIndexMetadataPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiLogicalIndexMetadataPB.newBuilder() to construct.
    private SniiLogicalIndexMetadataPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiLogicalIndexMetadataPB() {
      indexSuffix_ = com.google.protobuf.ByteString.EMPTY;
      files_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiLogicalIndexMetadataPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiLogicalIndexMetadataPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiLogicalIndexMetadataPB.class, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder.class);
    }

    private int bitField0_;
    public static final int INDEX_ID_FIELD_NUMBER = 1;
    private long indexId_ = 0L;
    /**
     * <code>optional uint64 index_id = 1;</code>
     * @return Whether the indexId field is set.
     */
    @java.lang.Override
    public boolean hasIndexId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint64 index_id = 1;</code>
     * @return The indexId.
     */
    @java.lang.Override
    public long getIndexId() {
      return indexId_;
    }

    public static final int INDEX_SUFFIX_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString indexSuffix_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes index_suffix = 2;</code>
     * @return Whether the indexSuffix field is set.
     */
    @java.lang.Override
    public boolean hasIndexSuffix() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional bytes index_suffix = 2;</code>
     * @return The indexSuffix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getIndexSuffix() {
      return indexSuffix_;
    }

    public static final int CORE_METADATA_FIELD_NUMBER = 3;
    private doris.snii.Snii.SniiBlobRefPB coreMetadata_;
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     * @return Whether the coreMetadata field is set.
     */
    @java.lang.Override
    public boolean hasCoreMetadata() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     * @return The coreMetadata.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPB getCoreMetadata() {
      return coreMetadata_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : coreMetadata_;
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPBOrBuilder getCoreMetadataOrBuilder() {
      return coreMetadata_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : coreMetadata_;
    }

    public static final int SAMPLED_TERM_INDEX_FIELD_NUMBER = 4;
    private doris.snii.Snii.SniiBlobRefPB sampledTermIndex_;
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     * @return Whether the sampledTermIndex field is set.
     */
    @java.lang.Override
    public boolean hasSampledTermIndex() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     * @return The sampledTermIndex.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPB getSampledTermIndex() {
      return sampledTermIndex_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : sampledTermIndex_;
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPBOrBuilder getSampledTermIndexOrBuilder() {
      return sampledTermIndex_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : sampledTermIndex_;
    }

    public static final int DICT_BLOCK_DIRECTORY_FIELD_NUMBER = 5;
    private doris.snii.Snii.SniiBlobRefPB dictBlockDirectory_;
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     * @return Whether the dictBlockDirectory field is set.
     */
    @java.lang.Override
    public boolean hasDictBlockDirectory() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     * @return The dictBlockDirectory.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPB getDictBlockDirectory() {
      return dictBlockDirectory_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : dictBlockDirectory_;
    }
    /**
     * <pre>
     * INVERTED only
     * </pre>
     *
     * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPBOrBuilder getDictBlockDirectoryOrBuilder() {
      return dictBlockDirectory_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : dictBlockDirectory_;
    }

    public static final int KIND_FIELD_NUMBER = 6;
    private int kind_ = 0;
    /**
     * <pre>
     * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
     * on INVERTED entries: proto2 presence semantics would serialize it and
     * change the bytes of every pure-text directory.
     * </pre>
     *
     * <code>optional uint32 kind = 6;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
     * on INVERTED entries: proto2 presence semantics would serialize it and
     * change the bytes of every pure-text directory.
     * </pre>
     *
     * <code>optional uint32 kind = 6;</code>
     * @return The kind.
     */
    @java.lang.Override
    public int getKind() {
      return kind_;
    }

    public static final int FILES_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List<doris.snii.Snii.SniiNamedBlobPB> files_;
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    @java.lang.Override
    public java.util.List<doris.snii.Snii.SniiNamedBlobPB> getFilesList() {
      return files_;
    }
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.snii.Snii.SniiNamedBlobPBOrBuilder> 
        getFilesOrBuilderList() {
      return files_;
    }
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    @java.lang.Override
    public int getFilesCount() {
      return files_.size();
    }
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiNamedBlobPB getFiles(int index) {
      return files_.get(index);
    }
    /**
     * <pre>
     * blob kinds only
     * </pre>
     *
     * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiNamedBlobPBOrBuilder getFilesOrBuilder(
        int index) {
      return files_.get(index);
    }

    public static final int DROPPED_POSTINGS_FIELD_NUMBER = 8;
    private boolean droppedPostings_ = false;
    /**
     * <pre>
     * Set when an inverted index drops postings. Omit it when false so unchanged
     * directories keep their wire bytes; rewrites use it to preserve the feature.
     * </pre>
     *
     * <code>optional bool dropped_postings = 8;</code>
     * @return Whether the droppedPostings field is set.
     */
    @java.lang.Override
    public boolean hasDroppedPostings() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Set when an inverted index drops postings. Omit it when false so unchanged
     * directories keep their wire bytes; rewrites use it to preserve the feature.
     * </pre>
     *
     * <code>optional bool dropped_postings = 8;</code>
     * @return The droppedPostings.
     */
    @java.lang.Override
    public boolean getDroppedPostings() {
      return droppedPostings_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, indexId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBytes(2, indexSuffix_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getCoreMetadata());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getSampledTermIndex());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getDictBlockDirectory());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(6, kind_);
      }
      for (int i = 0; i < files_.size(); i++) {
        output.writeMessage(7, files_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(8, droppedPostings_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, indexId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, indexSuffix_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getCoreMetadata());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSampledTermIndex());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getDictBlockDirectory());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, kind_);
      }
      for (int i = 0; i < files_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, files_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, droppedPostings_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiLogicalIndexMetadataPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiLogicalIndexMetadataPB other = (doris.snii.Snii.SniiLogicalIndexMetadataPB) obj;

      if (hasIndexId() != other.hasIndexId()) return false;
      if (hasIndexId()) {
        if (getIndexId()
            != other.getIndexId()) return false;
      }
      if (hasIndexSuffix() != other.hasIndexSuffix()) return false;
      if (hasIndexSuffix()) {
        if (!getIndexSuffix()
            .equals(other.getIndexSuffix())) return false;
      }
      if (hasCoreMetadata() != other.hasCoreMetadata()) return false;
      if (hasCoreMetadata()) {
        if (!getCoreMetadata()
            .equals(other.getCoreMetadata())) return false;
      }
      if (hasSampledTermIndex() != other.hasSampledTermIndex()) return false;
      if (hasSampledTermIndex()) {
        if (!getSampledTermIndex()
            .equals(other.getSampledTermIndex())) return false;
      }
      if (hasDictBlockDirectory() != other.hasDictBlockDirectory()) return false;
      if (hasDictBlockDirectory()) {
        if (!getDictBlockDirectory()
            .equals(other.getDictBlockDirectory())) return false;
      }
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (getKind()
            != other.getKind()) return false;
      }
      if (!getFilesList()
          .equals(other.getFilesList())) return false;
      if (hasDroppedPostings() != other.hasDroppedPostings()) return false;
      if (hasDroppedPostings()) {
        if (getDroppedPostings()
            != other.getDroppedPostings()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasIndexId()) {
        hash = (37 * hash) + INDEX_ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getIndexId());
      }
      if (hasIndexSuffix()) {
        hash = (37 * hash) + INDEX_SUFFIX_FIELD_NUMBER;
        hash = (53 * hash) + getIndexSuffix().hashCode();
      }
      if (hasCoreMetadata()) {
        hash = (37 * hash) + CORE_METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getCoreMetadata().hashCode();
      }
      if (hasSampledTermIndex()) {
        hash = (37 * hash) + SAMPLED_TERM_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getSampledTermIndex().hashCode();
      }
      if (hasDictBlockDirectory()) {
        hash = (37 * hash) + DICT_BLOCK_DIRECTORY_FIELD_NUMBER;
        hash = (53 * hash) + getDictBlockDirectory().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind();
      }
      if (getFilesCount() > 0) {
        hash = (37 * hash) + FILES_FIELD_NUMBER;
        hash = (53 * hash) + getFilesList().hashCode();
      }
      if (hasDroppedPostings()) {
        hash = (37 * hash) + DROPPED_POSTINGS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDroppedPostings());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiLogicalIndexMetadataPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiLogicalIndexMetadataPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.snii.SniiLogicalIndexMetadataPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiLogicalIndexMetadataPB)
        doris.snii.Snii.SniiLogicalIndexMetadataPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiLogicalIndexMetadataPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiLogicalIndexMetadataPB.class, doris.snii.Snii.SniiLogicalIndexMetadataPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiLogicalIndexMetadataPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getCoreMetadataFieldBuilder();
          getSampledTermIndexFieldBuilder();
          getDictBlockDirectoryFieldBuilder();
          getFilesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        indexId_ = 0L;
        indexSuffix_ = com.google.protobuf.ByteString.EMPTY;
        coreMetadata_ = null;
        if (coreMetadataBuilder_ != null) {
          coreMetadataBuilder_.dispose();
          coreMetadataBuilder_ = null;
        }
        sampledTermIndex_ = null;
        if (sampledTermIndexBuilder_ != null) {
          sampledTermIndexBuilder_.dispose();
          sampledTermIndexBuilder_ = null;
        }
        dictBlockDirectory_ = null;
        if (dictBlockDirectoryBuilder_ != null) {
          dictBlockDirectoryBuilder_.dispose();
          dictBlockDirectoryBuilder_ = null;
        }
        kind_ = 0;
        if (filesBuilder_ == null) {
          files_ = java.util.Collections.emptyList();
        } else {
          files_ = null;
          filesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        droppedPostings_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiLogicalIndexMetadataPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiLogicalIndexMetadataPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiLogicalIndexMetadataPB build() {
        doris.snii.Snii.SniiLogicalIndexMetadataPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiLogicalIndexMetadataPB buildPartial() {
        doris.snii.Snii.SniiLogicalIndexMetadataPB result = new doris.snii.Snii.SniiLogicalIndexMetadataPB(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(doris.snii.Snii.SniiLogicalIndexMetadataPB result) {
        if (filesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            files_ = java.util.Collections.unmodifiableList(files_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.files_ = files_;
        } else {
          result.files_ = filesBuilder_.build();
        }
      }

      private void buildPartial0(doris.snii.Snii.SniiLogicalIndexMetadataPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.indexId_ = indexId_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.indexSuffix_ = indexSuffix_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.coreMetadata_ = coreMetadataBuilder_ == null
              ? coreMetadata_
              : coreMetadataBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sampledTermIndex_ = sampledTermIndexBuilder_ == null
              ? sampledTermIndex_
              : sampledTermIndexBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.dictBlockDirectory_ = dictBlockDirectoryBuilder_ == null
              ? dictBlockDirectory_
              : dictBlockDirectoryBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.kind_ = kind_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.droppedPostings_ = droppedPostings_;
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiLogicalIndexMetadataPB) {
          return mergeFrom((doris.snii.Snii.SniiLogicalIndexMetadataPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiLogicalIndexMetadataPB other) {
        if (other == doris.snii.Snii.SniiLogicalIndexMetadataPB.getDefaultInstance()) return this;
        if (other.hasIndexId()) {
          setIndexId(other.getIndexId());
        }
        if (other.hasIndexSuffix()) {
          setIndexSuffix(other.getIndexSuffix());
        }
        if (other.hasCoreMetadata()) {
          mergeCoreMetadata(other.getCoreMetadata());
        }
        if (other.hasSampledTermIndex()) {
          mergeSampledTermIndex(other.getSampledTermIndex());
        }
        if (other.hasDictBlockDirectory()) {
          mergeDictBlockDirectory(other.getDictBlockDirectory());
        }
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        if (filesBuilder_ == null) {
          if (!other.files_.isEmpty()) {
            if (files_.isEmpty()) {
              files_ = other.files_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureFilesIsMutable();
              files_.addAll(other.files_);
            }
            onChanged();
          }
        } else {
          if (!other.files_.isEmpty()) {
            if (filesBuilder_.isEmpty()) {
              filesBuilder_.dispose();
              filesBuilder_ = null;
              files_ = other.files_;
              bitField0_ = (bitField0_ & ~0x00000040);
              filesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFilesFieldBuilder() : null;
            } else {
              filesBuilder_.addAllMessages(other.files_);
            }
          }
        }
        if (other.hasDroppedPostings()) {
          setDroppedPostings(other.getDroppedPostings());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                indexId_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                indexSuffix_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getCoreMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getSampledTermIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getDictBlockDirectoryFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                kind_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                doris.snii.Snii.SniiNamedBlobPB m =
                    input.readMessage(
                        doris.snii.Snii.SniiNamedBlobPB.PARSER,
                        extensionRegistry);
                if (filesBuilder_ == null) {
                  ensureFilesIsMutable();
                  files_.add(m);
                } else {
                  filesBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 64: {
                droppedPostings_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long indexId_ ;
      /**
       * <code>optional uint64 index_id = 1;</code>
       * @return Whether the indexId field is set.
       */
      @java.lang.Override
      public boolean hasIndexId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint64 index_id = 1;</code>
       * @return The indexId.
       */
      @java.lang.Override
      public long getIndexId() {
        return indexId_;
      }
      /**
       * <code>optional uint64 index_id = 1;</code>
       * @param value The indexId to set.
       * @return This builder for chaining.
       */
      public Builder setIndexId(long value) {

        indexId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 index_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndexId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexId_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString indexSuffix_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes index_suffix = 2;</code>
       * @return Whether the indexSuffix field is set.
       */
      @java.lang.Override
      public boolean hasIndexSuffix() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bytes index_suffix = 2;</code>
       * @return The indexSuffix.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getIndexSuffix() {
        return indexSuffix_;
      }
      /**
       * <code>optional bytes index_suffix = 2;</code>
       * @param value The indexSuffix to set.
       * @return This builder for chaining.
       */
      public Builder setIndexSuffix(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        indexSuffix_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes index_suffix = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndexSuffix() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexSuffix_ = getDefaultInstance().getIndexSuffix();
        onChanged();
        return this;
      }

      private doris.snii.Snii.SniiBlobRefPB coreMetadata_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> coreMetadataBuilder_;
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       * @return Whether the coreMetadata field is set.
       */
      public boolean hasCoreMetadata() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       * @return The coreMetadata.
       */
      public doris.snii.Snii.SniiBlobRefPB getCoreMetadata() {
        if (coreMetadataBuilder_ == null) {
          return coreMetadata_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : coreMetadata_;
        } else {
          return coreMetadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public Builder setCoreMetadata(doris.snii.Snii.SniiBlobRefPB value) {
        if (coreMetadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          coreMetadata_ = value;
        } else {
          coreMetadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public Builder setCoreMetadata(
          doris.snii.Snii.SniiBlobRefPB.Builder builderForValue) {
        if (coreMetadataBuilder_ == null) {
          coreMetadata_ = builderForValue.build();
        } else {
          coreMetadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public Builder mergeCoreMetadata(doris.snii.Snii.SniiBlobRefPB value) {
        if (coreMetadataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            coreMetadata_ != null &&
            coreMetadata_ != doris.snii.Snii.SniiBlobRefPB.getDefaultInstance()) {
            getCoreMetadataBuilder().mergeFrom(value);
          } else {
            coreMetadata_ = value;
          }
        } else {
          coreMetadataBuilder_.mergeFrom(value);
        }
        if (coreMetadata_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public Builder clearCoreMetadata() {
        bitField0_ = (bitField0_ & ~0x00000004);
        coreMetadata_ = null;
        if (coreMetadataBuilder_ != null) {
          coreMetadataBuilder_.dispose();
          coreMetadataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public doris.snii.Snii.SniiBlobRefPB.Builder getCoreMetadataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getCoreMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      public doris.snii.Snii.SniiBlobRefPBOrBuilder getCoreMetadataOrBuilder() {
        if (coreMetadataBuilder_ != null) {
          return coreMetadataBuilder_.getMessageOrBuilder();
        } else {
          return coreMetadata_ == null ?
              doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : coreMetadata_;
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB core_metadata = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> 
          getCoreMetadataFieldBuilder() {
        if (coreMetadataBuilder_ == null) {
          coreMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder>(
                  getCoreMetadata(),
                  getParentForChildren(),
                  isClean());
          coreMetadata_ = null;
        }
        return coreMetadataBuilder_;
      }

      private doris.snii.Snii.SniiBlobRefPB sampledTermIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> sampledTermIndexBuilder_;
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       * @return Whether the sampledTermIndex field is set.
       */
      public boolean hasSampledTermIndex() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       * @return The sampledTermIndex.
       */
      public doris.snii.Snii.SniiBlobRefPB getSampledTermIndex() {
        if (sampledTermIndexBuilder_ == null) {
          return sampledTermIndex_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : sampledTermIndex_;
        } else {
          return sampledTermIndexBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public Builder setSampledTermIndex(doris.snii.Snii.SniiBlobRefPB value) {
        if (sampledTermIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sampledTermIndex_ = value;
        } else {
          sampledTermIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public Builder setSampledTermIndex(
          doris.snii.Snii.SniiBlobRefPB.Builder builderForValue) {
        if (sampledTermIndexBuilder_ == null) {
          sampledTermIndex_ = builderForValue.build();
        } else {
          sampledTermIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public Builder mergeSampledTermIndex(doris.snii.Snii.SniiBlobRefPB value) {
        if (sampledTermIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            sampledTermIndex_ != null &&
            sampledTermIndex_ != doris.snii.Snii.SniiBlobRefPB.getDefaultInstance()) {
            getSampledTermIndexBuilder().mergeFrom(value);
          } else {
            sampledTermIndex_ = value;
          }
        } else {
          sampledTermIndexBuilder_.mergeFrom(value);
        }
        if (sampledTermIndex_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public Builder clearSampledTermIndex() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sampledTermIndex_ = null;
        if (sampledTermIndexBuilder_ != null) {
          sampledTermIndexBuilder_.dispose();
          sampledTermIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public doris.snii.Snii.SniiBlobRefPB.Builder getSampledTermIndexBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSampledTermIndexFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      public doris.snii.Snii.SniiBlobRefPBOrBuilder getSampledTermIndexOrBuilder() {
        if (sampledTermIndexBuilder_ != null) {
          return sampledTermIndexBuilder_.getMessageOrBuilder();
        } else {
          return sampledTermIndex_ == null ?
              doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : sampledTermIndex_;
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB sampled_term_index = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> 
          getSampledTermIndexFieldBuilder() {
        if (sampledTermIndexBuilder_ == null) {
          sampledTermIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder>(
                  getSampledTermIndex(),
                  getParentForChildren(),
                  isClean());
          sampledTermIndex_ = null;
        }
        return sampledTermIndexBuilder_;
      }

      private doris.snii.Snii.SniiBlobRefPB dictBlockDirectory_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> dictBlockDirectoryBuilder_;
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       * @return Whether the dictBlockDirectory field is set.
       */
      public boolean hasDictBlockDirectory() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       * @return The dictBlockDirectory.
       */
      public doris.snii.Snii.SniiBlobRefPB getDictBlockDirectory() {
        if (dictBlockDirectoryBuilder_ == null) {
          return dictBlockDirectory_ == null ? doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : dictBlockDirectory_;
        } else {
          return dictBlockDirectoryBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public Builder setDictBlockDirectory(doris.snii.Snii.SniiBlobRefPB value) {
        if (dictBlockDirectoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dictBlockDirectory_ = value;
        } else {
          dictBlockDirectoryBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public Builder setDictBlockDirectory(
          doris.snii.Snii.SniiBlobRefPB.Builder builderForValue) {
        if (dictBlockDirectoryBuilder_ == null) {
          dictBlockDirectory_ = builderForValue.build();
        } else {
          dictBlockDirectoryBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public Builder mergeDictBlockDirectory(doris.snii.Snii.SniiBlobRefPB value) {
        if (dictBlockDirectoryBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            dictBlockDirectory_ != null &&
            dictBlockDirectory_ != doris.snii.Snii.SniiBlobRefPB.getDefaultInstance()) {
            getDictBlockDirectoryBuilder().mergeFrom(value);
          } else {
            dictBlockDirectory_ = value;
          }
        } else {
          dictBlockDirectoryBuilder_.mergeFrom(value);
        }
        if (dictBlockDirectory_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public Builder clearDictBlockDirectory() {
        bitField0_ = (bitField0_ & ~0x00000010);
        dictBlockDirectory_ = null;
        if (dictBlockDirectoryBuilder_ != null) {
          dictBlockDirectoryBuilder_.dispose();
          dictBlockDirectoryBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public doris.snii.Snii.SniiBlobRefPB.Builder getDictBlockDirectoryBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getDictBlockDirectoryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      public doris.snii.Snii.SniiBlobRefPBOrBuilder getDictBlockDirectoryOrBuilder() {
        if (dictBlockDirectoryBuilder_ != null) {
          return dictBlockDirectoryBuilder_.getMessageOrBuilder();
        } else {
          return dictBlockDirectory_ == null ?
              doris.snii.Snii.SniiBlobRefPB.getDefaultInstance() : dictBlockDirectory_;
        }
      }
      /**
       * <pre>
       * INVERTED only
       * </pre>
       *
       * <code>optional .doris.snii.SniiBlobRefPB dict_block_directory = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder> 
          getDictBlockDirectoryFieldBuilder() {
        if (dictBlockDirectoryBuilder_ == null) {
          dictBlockDirectoryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiBlobRefPB, doris.snii.Snii.SniiBlobRefPB.Builder, doris.snii.Snii.SniiBlobRefPBOrBuilder>(
                  getDictBlockDirectory(),
                  getParentForChildren(),
                  isClean());
          dictBlockDirectory_ = null;
        }
        return dictBlockDirectoryBuilder_;
      }

      private int kind_ ;
      /**
       * <pre>
       * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
       * on INVERTED entries: proto2 presence semantics would serialize it and
       * change the bytes of every pure-text directory.
       * </pre>
       *
       * <code>optional uint32 kind = 6;</code>
       * @return Whether the kind field is set.
       */
      @java.lang.Override
      public boolean hasKind() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
       * on INVERTED entries: proto2 presence semantics would serialize it and
       * change the bytes of every pure-text directory.
       * </pre>
       *
       * <code>optional uint32 kind = 6;</code>
       * @return The kind.
       */
      @java.lang.Override
      public int getKind() {
        return kind_;
      }
      /**
       * <pre>
       * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
       * on INVERTED entries: proto2 presence semantics would serialize it and
       * change the bytes of every pure-text directory.
       * </pre>
       *
       * <code>optional uint32 kind = 6;</code>
       * @param value The kind to set.
       * @return This builder for chaining.
       */
      public Builder setKind(int value) {

        kind_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SniiLogicalIndexKindPB. Writers MUST NOT set this field (not even to 0)
       * on INVERTED entries: proto2 presence semantics would serialize it and
       * change the bytes of every pure-text directory.
       * </pre>
       *
       * <code>optional uint32 kind = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000020);
        kind_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<doris.snii.Snii.SniiNamedBlobPB> files_ =
        java.util.Collections.emptyList();
      private void ensureFilesIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          files_ = new java.util.ArrayList<doris.snii.Snii.SniiNamedBlobPB>(files_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.snii.Snii.SniiNamedBlobPB, doris.snii.Snii.SniiNamedBlobPB.Builder, doris.snii.Snii.SniiNamedBlobPBOrBuilder> filesBuilder_;

      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public java.util.List<doris.snii.Snii.SniiNamedBlobPB> getFilesList() {
        if (filesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(files_);
        } else {
          return filesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public int getFilesCount() {
        if (filesBuilder_ == null) {
          return files_.size();
        } else {
          return filesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public doris.snii.Snii.SniiNamedBlobPB getFiles(int index) {
        if (filesBuilder_ == null) {
          return files_.get(index);
        } else {
          return filesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder setFiles(
          int index, doris.snii.Snii.SniiNamedBlobPB value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.set(index, value);
          onChanged();
        } else {
          filesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder setFiles(
          int index, doris.snii.Snii.SniiNamedBlobPB.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.set(index, builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder addFiles(doris.snii.Snii.SniiNamedBlobPB value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.add(value);
          onChanged();
        } else {
          filesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder addFiles(
          int index, doris.snii.Snii.SniiNamedBlobPB value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.add(index, value);
          onChanged();
        } else {
          filesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder addFiles(
          doris.snii.Snii.SniiNamedBlobPB.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.add(builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder addFiles(
          int index, doris.snii.Snii.SniiNamedBlobPB.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.add(index, builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder addAllFiles(
          java.lang.Iterable<? extends doris.snii.Snii.SniiNamedBlobPB> values) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, files_);
          onChanged();
        } else {
          filesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder clearFiles() {
        if (filesBuilder_ == null) {
          files_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          filesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public Builder removeFiles(int index) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.remove(index);
          onChanged();
        } else {
          filesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public doris.snii.Snii.SniiNamedBlobPB.Builder getFilesBuilder(
          int index) {
        return getFilesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public doris.snii.Snii.SniiNamedBlobPBOrBuilder getFilesOrBuilder(
          int index) {
        if (filesBuilder_ == null) {
          return files_.get(index);  } else {
          return filesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public java.util.List<? extends doris.snii.Snii.SniiNamedBlobPBOrBuilder> 
           getFilesOrBuilderList() {
        if (filesBuilder_ != null) {
          return filesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(files_);
        }
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public doris.snii.Snii.SniiNamedBlobPB.Builder addFilesBuilder() {
        return getFilesFieldBuilder().addBuilder(
            doris.snii.Snii.SniiNamedBlobPB.getDefaultInstance());
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public doris.snii.Snii.SniiNamedBlobPB.Builder addFilesBuilder(
          int index) {
        return getFilesFieldBuilder().addBuilder(
            index, doris.snii.Snii.SniiNamedBlobPB.getDefaultInstance());
      }
      /**
       * <pre>
       * blob kinds only
       * </pre>
       *
       * <code>repeated .doris.snii.SniiNamedBlobPB files = 7;</code>
       */
      public java.util.List<doris.snii.Snii.SniiNamedBlobPB.Builder> 
           getFilesBuilderList() {
        return getFilesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.snii.Snii.SniiNamedBlobPB, doris.snii.Snii.SniiNamedBlobPB.Builder, doris.snii.Snii.SniiNamedBlobPBOrBuilder> 
          getFilesFieldBuilder() {
        if (filesBuilder_ == null) {
          filesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.snii.Snii.SniiNamedBlobPB, doris.snii.Snii.SniiNamedBlobPB.Builder, doris.snii.Snii.SniiNamedBlobPBOrBuilder>(
                  files_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          files_ = null;
        }
        return filesBuilder_;
      }

      private boolean droppedPostings_ ;
      /**
       * <pre>
       * Set when an inverted index drops postings. Omit it when false so unchanged
       * directories keep their wire bytes; rewrites use it to preserve the feature.
       * </pre>
       *
       * <code>optional bool dropped_postings = 8;</code>
       * @return Whether the droppedPostings field is set.
       */
      @java.lang.Override
      public boolean hasDroppedPostings() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Set when an inverted index drops postings. Omit it when false so unchanged
       * directories keep their wire bytes; rewrites use it to preserve the feature.
       * </pre>
       *
       * <code>optional bool dropped_postings = 8;</code>
       * @return The droppedPostings.
       */
      @java.lang.Override
      public boolean getDroppedPostings() {
        return droppedPostings_;
      }
      /**
       * <pre>
       * Set when an inverted index drops postings. Omit it when false so unchanged
       * directories keep their wire bytes; rewrites use it to preserve the feature.
       * </pre>
       *
       * <code>optional bool dropped_postings = 8;</code>
       * @param value The droppedPostings to set.
       * @return This builder for chaining.
       */
      public Builder setDroppedPostings(boolean value) {

        droppedPostings_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set when an inverted index drops postings. Omit it when false so unchanged
       * directories keep their wire bytes; rewrites use it to preserve the feature.
       * </pre>
       *
       * <code>optional bool dropped_postings = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDroppedPostings() {
        bitField0_ = (bitField0_ & ~0x00000080);
        droppedPostings_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiLogicalIndexMetadataPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiLogicalIndexMetadataPB)
    private static final doris.snii.Snii.SniiLogicalIndexMetadataPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiLogicalIndexMetadataPB();
    }

    public static doris.snii.Snii.SniiLogicalIndexMetadataPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiLogicalIndexMetadataPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiLogicalIndexMetadataPB>() {
      @java.lang.Override
      public SniiLogicalIndexMetadataPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiLogicalIndexMetadataPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiLogicalIndexMetadataPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiLogicalIndexMetadataPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiBlobRefPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiBlobRefPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    boolean hasOffset();
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <code>optional uint64 length = 2;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <code>optional uint64 length = 2;</code>
     * @return The length.
     */
    long getLength();
  }
  /**
   * Protobuf type {@code doris.snii.SniiBlobRefPB}
   */
  public static final class SniiBlobRefPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiBlobRefPB)
      SniiBlobRefPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiBlobRefPB.newBuilder() to construct.
    private SniiBlobRefPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiBlobRefPB() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiBlobRefPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiBlobRefPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiBlobRefPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiBlobRefPB.class, doris.snii.Snii.SniiBlobRefPB.Builder.class);
    }

    private int bitField0_;
    public static final int OFFSET_FIELD_NUMBER = 1;
    private long offset_ = 0L;
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    @java.lang.Override
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int LENGTH_FIELD_NUMBER = 2;
    private long length_ = 0L;
    /**
     * <code>optional uint64 length = 2;</code>
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint64 length = 2;</code>
     * @return The length.
     */
    @java.lang.Override
    public long getLength() {
      return length_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, length_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, length_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiBlobRefPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiBlobRefPB other = (doris.snii.Snii.SniiBlobRefPB) obj;

      if (hasOffset() != other.hasOffset()) return false;
      if (hasOffset()) {
        if (getOffset()
            != other.getOffset()) return false;
      }
      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (getLength()
            != other.getLength()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOffset()) {
        hash = (37 * hash) + OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getOffset());
      }
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getLength());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiBlobRefPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiBlobRefPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiBlobRefPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiBlobRefPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.snii.SniiBlobRefPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiBlobRefPB)
        doris.snii.Snii.SniiBlobRefPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiBlobRefPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiBlobRefPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiBlobRefPB.class, doris.snii.Snii.SniiBlobRefPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiBlobRefPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        offset_ = 0L;
        length_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiBlobRefPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiBlobRefPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiBlobRefPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiBlobRefPB build() {
        doris.snii.Snii.SniiBlobRefPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiBlobRefPB buildPartial() {
        doris.snii.Snii.SniiBlobRefPB result = new doris.snii.Snii.SniiBlobRefPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiBlobRefPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.offset_ = offset_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.length_ = length_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiBlobRefPB) {
          return mergeFrom((doris.snii.Snii.SniiBlobRefPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiBlobRefPB other) {
        if (other == doris.snii.Snii.SniiBlobRefPB.getDefaultInstance()) return this;
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (other.hasLength()) {
          setLength(other.getLength());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                offset_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                length_ = input.readUInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long offset_ ;
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {

        offset_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000001);
        offset_ = 0L;
        onChanged();
        return this;
      }

      private long length_ ;
      /**
       * <code>optional uint64 length = 2;</code>
       * @return Whether the length field is set.
       */
      @java.lang.Override
      public boolean hasLength() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @return The length.
       */
      @java.lang.Override
      public long getLength() {
        return length_;
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @param value The length to set.
       * @return This builder for chaining.
       */
      public Builder setLength(long value) {

        length_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000002);
        length_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiBlobRefPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiBlobRefPB)
    private static final doris.snii.Snii.SniiBlobRefPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiBlobRefPB();
    }

    public static doris.snii.Snii.SniiBlobRefPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiBlobRefPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiBlobRefPB>() {
      @java.lang.Override
      public SniiBlobRefPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiBlobRefPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiBlobRefPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiBlobRefPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiCoreMetadataPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiCoreMetadataPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint32 index_config = 1;</code>
     * @return Whether the indexConfig field is set.
     */
    boolean hasIndexConfig();
    /**
     * <code>optional uint32 index_config = 1;</code>
     * @return The indexConfig.
     */
    int getIndexConfig();

    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     * @return Whether the stats field is set.
     */
    boolean hasStats();
    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     * @return The stats.
     */
    doris.snii.Snii.SniiStatsPB getStats();
    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     */
    doris.snii.Snii.SniiStatsPBOrBuilder getStatsOrBuilder();

    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     * @return Whether the sectionRefs field is set.
     */
    boolean hasSectionRefs();
    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     * @return The sectionRefs.
     */
    doris.snii.Snii.SniiSectionRefsPB getSectionRefs();
    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     */
    doris.snii.Snii.SniiSectionRefsPBOrBuilder getSectionRefsOrBuilder();

    /**
     * <pre>
     * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
     * </pre>
     *
     * <code>optional bytes legacy_common_grams = 4;</code>
     * @return Whether the legacyCommonGrams field is set.
     */
    boolean hasLegacyCommonGrams();
    /**
     * <pre>
     * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
     * </pre>
     *
     * <code>optional bytes legacy_common_grams = 4;</code>
     * @return The legacyCommonGrams.
     */
    com.google.protobuf.ByteString getLegacyCommonGrams();

    /**
     * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
     * @return Whether the legacyCommonGramsPostingPolicy field is set.
     */
    boolean hasLegacyCommonGramsPostingPolicy();
    /**
     * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
     * @return The legacyCommonGramsPostingPolicy.
     */
    int getLegacyCommonGramsPostingPolicy();

    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     * @return Whether the gramScheme field is set.
     */
    boolean hasGramScheme();
    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     * @return The gramScheme.
     */
    doris.snii.Snii.SniiGramSchemePB getGramScheme();
    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     */
    doris.snii.Snii.SniiGramSchemePBOrBuilder getGramSchemeOrBuilder();

    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     * @return Whether the highDfTerms field is set.
     */
    boolean hasHighDfTerms();
    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     * @return The highDfTerms.
     */
    doris.snii.Snii.SniiHighDfTermsPB getHighDfTerms();
    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     */
    doris.snii.Snii.SniiHighDfTermsPBOrBuilder getHighDfTermsOrBuilder();
  }
  /**
   * Protobuf type {@code doris.snii.SniiCoreMetadataPB}
   */
  public static final class SniiCoreMetadataPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiCoreMetadataPB)
      SniiCoreMetadataPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiCoreMetadataPB.newBuilder() to construct.
    private SniiCoreMetadataPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiCoreMetadataPB() {
      legacyCommonGrams_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiCoreMetadataPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiCoreMetadataPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiCoreMetadataPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiCoreMetadataPB.class, doris.snii.Snii.SniiCoreMetadataPB.Builder.class);
    }

    private int bitField0_;
    public static final int INDEX_CONFIG_FIELD_NUMBER = 1;
    private int indexConfig_ = 0;
    /**
     * <code>optional uint32 index_config = 1;</code>
     * @return Whether the indexConfig field is set.
     */
    @java.lang.Override
    public boolean hasIndexConfig() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 index_config = 1;</code>
     * @return The indexConfig.
     */
    @java.lang.Override
    public int getIndexConfig() {
      return indexConfig_;
    }

    public static final int STATS_FIELD_NUMBER = 2;
    private doris.snii.Snii.SniiStatsPB stats_;
    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     * @return Whether the stats field is set.
     */
    @java.lang.Override
    public boolean hasStats() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     * @return The stats.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiStatsPB getStats() {
      return stats_ == null ? doris.snii.Snii.SniiStatsPB.getDefaultInstance() : stats_;
    }
    /**
     * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiStatsPBOrBuilder getStatsOrBuilder() {
      return stats_ == null ? doris.snii.Snii.SniiStatsPB.getDefaultInstance() : stats_;
    }

    public static final int SECTION_REFS_FIELD_NUMBER = 3;
    private doris.snii.Snii.SniiSectionRefsPB sectionRefs_;
    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     * @return Whether the sectionRefs field is set.
     */
    @java.lang.Override
    public boolean hasSectionRefs() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     * @return The sectionRefs.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiSectionRefsPB getSectionRefs() {
      return sectionRefs_ == null ? doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance() : sectionRefs_;
    }
    /**
     * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiSectionRefsPBOrBuilder getSectionRefsOrBuilder() {
      return sectionRefs_ == null ? doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance() : sectionRefs_;
    }

    public static final int LEGACY_COMMON_GRAMS_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString legacyCommonGrams_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
     * </pre>
     *
     * <code>optional bytes legacy_common_grams = 4;</code>
     * @return Whether the legacyCommonGrams field is set.
     */
    @java.lang.Override
    public boolean hasLegacyCommonGrams() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
     * </pre>
     *
     * <code>optional bytes legacy_common_grams = 4;</code>
     * @return The legacyCommonGrams.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getLegacyCommonGrams() {
      return legacyCommonGrams_;
    }

    public static final int LEGACY_COMMON_GRAMS_POSTING_POLICY_FIELD_NUMBER = 5;
    private int legacyCommonGramsPostingPolicy_ = 0;
    /**
     * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
     * @return Whether the legacyCommonGramsPostingPolicy field is set.
     */
    @java.lang.Override
    public boolean hasLegacyCommonGramsPostingPolicy() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
     * @return The legacyCommonGramsPostingPolicy.
     */
    @java.lang.Override
    public int getLegacyCommonGramsPostingPolicy() {
      return legacyCommonGramsPostingPolicy_;
    }

    public static final int GRAM_SCHEME_FIELD_NUMBER = 6;
    private doris.snii.Snii.SniiGramSchemePB gramScheme_;
    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     * @return Whether the gramScheme field is set.
     */
    @java.lang.Override
    public boolean hasGramScheme() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     * @return The gramScheme.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiGramSchemePB getGramScheme() {
      return gramScheme_ == null ? doris.snii.Snii.SniiGramSchemePB.getDefaultInstance() : gramScheme_;
    }
    /**
     * <pre>
     * Stores the resolved scheme of a gram-family index. Omit it for other
     * indexes to preserve their wire bytes.
     * </pre>
     *
     * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiGramSchemePBOrBuilder getGramSchemeOrBuilder() {
      return gramScheme_ == null ? doris.snii.Snii.SniiGramSchemePB.getDefaultInstance() : gramScheme_;
    }

    public static final int HIGH_DF_TERMS_FIELD_NUMBER = 7;
    private doris.snii.Snii.SniiHighDfTermsPB highDfTerms_;
    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     * @return Whether the highDfTerms field is set.
     */
    @java.lang.Override
    public boolean hasHighDfTerms() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     * @return The highDfTerms.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiHighDfTermsPB getHighDfTerms() {
      return highDfTerms_ == null ? doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance() : highDfTerms_;
    }
    /**
     * <pre>
     * Summarizes high-frequency terms for the query cost gate.
     * </pre>
     *
     * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiHighDfTermsPBOrBuilder getHighDfTermsOrBuilder() {
      return highDfTerms_ == null ? doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance() : highDfTerms_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, indexConfig_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getStats());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSectionRefs());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBytes(4, legacyCommonGrams_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(5, legacyCommonGramsPostingPolicy_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getGramScheme());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getHighDfTerms());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, indexConfig_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getStats());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSectionRefs());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, legacyCommonGrams_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, legacyCommonGramsPostingPolicy_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getGramScheme());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getHighDfTerms());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiCoreMetadataPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiCoreMetadataPB other = (doris.snii.Snii.SniiCoreMetadataPB) obj;

      if (hasIndexConfig() != other.hasIndexConfig()) return false;
      if (hasIndexConfig()) {
        if (getIndexConfig()
            != other.getIndexConfig()) return false;
      }
      if (hasStats() != other.hasStats()) return false;
      if (hasStats()) {
        if (!getStats()
            .equals(other.getStats())) return false;
      }
      if (hasSectionRefs() != other.hasSectionRefs()) return false;
      if (hasSectionRefs()) {
        if (!getSectionRefs()
            .equals(other.getSectionRefs())) return false;
      }
      if (hasLegacyCommonGrams() != other.hasLegacyCommonGrams()) return false;
      if (hasLegacyCommonGrams()) {
        if (!getLegacyCommonGrams()
            .equals(other.getLegacyCommonGrams())) return false;
      }
      if (hasLegacyCommonGramsPostingPolicy() != other.hasLegacyCommonGramsPostingPolicy()) return false;
      if (hasLegacyCommonGramsPostingPolicy()) {
        if (getLegacyCommonGramsPostingPolicy()
            != other.getLegacyCommonGramsPostingPolicy()) return false;
      }
      if (hasGramScheme() != other.hasGramScheme()) return false;
      if (hasGramScheme()) {
        if (!getGramScheme()
            .equals(other.getGramScheme())) return false;
      }
      if (hasHighDfTerms() != other.hasHighDfTerms()) return false;
      if (hasHighDfTerms()) {
        if (!getHighDfTerms()
            .equals(other.getHighDfTerms())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasIndexConfig()) {
        hash = (37 * hash) + INDEX_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getIndexConfig();
      }
      if (hasStats()) {
        hash = (37 * hash) + STATS_FIELD_NUMBER;
        hash = (53 * hash) + getStats().hashCode();
      }
      if (hasSectionRefs()) {
        hash = (37 * hash) + SECTION_REFS_FIELD_NUMBER;
        hash = (53 * hash) + getSectionRefs().hashCode();
      }
      if (hasLegacyCommonGrams()) {
        hash = (37 * hash) + LEGACY_COMMON_GRAMS_FIELD_NUMBER;
        hash = (53 * hash) + getLegacyCommonGrams().hashCode();
      }
      if (hasLegacyCommonGramsPostingPolicy()) {
        hash = (37 * hash) + LEGACY_COMMON_GRAMS_POSTING_POLICY_FIELD_NUMBER;
        hash = (53 * hash) + getLegacyCommonGramsPostingPolicy();
      }
      if (hasGramScheme()) {
        hash = (37 * hash) + GRAM_SCHEME_FIELD_NUMBER;
        hash = (53 * hash) + getGramScheme().hashCode();
      }
      if (hasHighDfTerms()) {
        hash = (37 * hash) + HIGH_DF_TERMS_FIELD_NUMBER;
        hash = (53 * hash) + getHighDfTerms().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiCoreMetadataPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiCoreMetadataPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiCoreMetadataPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiCoreMetadataPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.snii.SniiCoreMetadataPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiCoreMetadataPB)
        doris.snii.Snii.SniiCoreMetadataPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiCoreMetadataPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiCoreMetadataPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiCoreMetadataPB.class, doris.snii.Snii.SniiCoreMetadataPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiCoreMetadataPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getStatsFieldBuilder();
          getSectionRefsFieldBuilder();
          getGramSchemeFieldBuilder();
          getHighDfTermsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        indexConfig_ = 0;
        stats_ = null;
        if (statsBuilder_ != null) {
          statsBuilder_.dispose();
          statsBuilder_ = null;
        }
        sectionRefs_ = null;
        if (sectionRefsBuilder_ != null) {
          sectionRefsBuilder_.dispose();
          sectionRefsBuilder_ = null;
        }
        legacyCommonGrams_ = com.google.protobuf.ByteString.EMPTY;
        legacyCommonGramsPostingPolicy_ = 0;
        gramScheme_ = null;
        if (gramSchemeBuilder_ != null) {
          gramSchemeBuilder_.dispose();
          gramSchemeBuilder_ = null;
        }
        highDfTerms_ = null;
        if (highDfTermsBuilder_ != null) {
          highDfTermsBuilder_.dispose();
          highDfTermsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiCoreMetadataPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiCoreMetadataPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiCoreMetadataPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiCoreMetadataPB build() {
        doris.snii.Snii.SniiCoreMetadataPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiCoreMetadataPB buildPartial() {
        doris.snii.Snii.SniiCoreMetadataPB result = new doris.snii.Snii.SniiCoreMetadataPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiCoreMetadataPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.indexConfig_ = indexConfig_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.stats_ = statsBuilder_ == null
              ? stats_
              : statsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.sectionRefs_ = sectionRefsBuilder_ == null
              ? sectionRefs_
              : sectionRefsBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.legacyCommonGrams_ = legacyCommonGrams_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.legacyCommonGramsPostingPolicy_ = legacyCommonGramsPostingPolicy_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.gramScheme_ = gramSchemeBuilder_ == null
              ? gramScheme_
              : gramSchemeBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.highDfTerms_ = highDfTermsBuilder_ == null
              ? highDfTerms_
              : highDfTermsBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiCoreMetadataPB) {
          return mergeFrom((doris.snii.Snii.SniiCoreMetadataPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiCoreMetadataPB other) {
        if (other == doris.snii.Snii.SniiCoreMetadataPB.getDefaultInstance()) return this;
        if (other.hasIndexConfig()) {
          setIndexConfig(other.getIndexConfig());
        }
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        if (other.hasSectionRefs()) {
          mergeSectionRefs(other.getSectionRefs());
        }
        if (other.hasLegacyCommonGrams()) {
          setLegacyCommonGrams(other.getLegacyCommonGrams());
        }
        if (other.hasLegacyCommonGramsPostingPolicy()) {
          setLegacyCommonGramsPostingPolicy(other.getLegacyCommonGramsPostingPolicy());
        }
        if (other.hasGramScheme()) {
          mergeGramScheme(other.getGramScheme());
        }
        if (other.hasHighDfTerms()) {
          mergeHighDfTerms(other.getHighDfTerms());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                indexConfig_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getStatsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSectionRefsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                legacyCommonGrams_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                legacyCommonGramsPostingPolicy_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                input.readMessage(
                    getGramSchemeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getHighDfTermsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int indexConfig_ ;
      /**
       * <code>optional uint32 index_config = 1;</code>
       * @return Whether the indexConfig field is set.
       */
      @java.lang.Override
      public boolean hasIndexConfig() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint32 index_config = 1;</code>
       * @return The indexConfig.
       */
      @java.lang.Override
      public int getIndexConfig() {
        return indexConfig_;
      }
      /**
       * <code>optional uint32 index_config = 1;</code>
       * @param value The indexConfig to set.
       * @return This builder for chaining.
       */
      public Builder setIndexConfig(int value) {

        indexConfig_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 index_config = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndexConfig() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexConfig_ = 0;
        onChanged();
        return this;
      }

      private doris.snii.Snii.SniiStatsPB stats_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiStatsPB, doris.snii.Snii.SniiStatsPB.Builder, doris.snii.Snii.SniiStatsPBOrBuilder> statsBuilder_;
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       * @return Whether the stats field is set.
       */
      public boolean hasStats() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       * @return The stats.
       */
      public doris.snii.Snii.SniiStatsPB getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? doris.snii.Snii.SniiStatsPB.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public Builder setStats(doris.snii.Snii.SniiStatsPB value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
        } else {
          statsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public Builder setStats(
          doris.snii.Snii.SniiStatsPB.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public Builder mergeStats(doris.snii.Snii.SniiStatsPB value) {
        if (statsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            stats_ != null &&
            stats_ != doris.snii.Snii.SniiStatsPB.getDefaultInstance()) {
            getStatsBuilder().mergeFrom(value);
          } else {
            stats_ = value;
          }
        } else {
          statsBuilder_.mergeFrom(value);
        }
        if (stats_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public Builder clearStats() {
        bitField0_ = (bitField0_ & ~0x00000002);
        stats_ = null;
        if (statsBuilder_ != null) {
          statsBuilder_.dispose();
          statsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public doris.snii.Snii.SniiStatsPB.Builder getStatsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      public doris.snii.Snii.SniiStatsPBOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              doris.snii.Snii.SniiStatsPB.getDefaultInstance() : stats_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiStatsPB stats = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiStatsPB, doris.snii.Snii.SniiStatsPB.Builder, doris.snii.Snii.SniiStatsPBOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiStatsPB, doris.snii.Snii.SniiStatsPB.Builder, doris.snii.Snii.SniiStatsPBOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }

      private doris.snii.Snii.SniiSectionRefsPB sectionRefs_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiSectionRefsPB, doris.snii.Snii.SniiSectionRefsPB.Builder, doris.snii.Snii.SniiSectionRefsPBOrBuilder> sectionRefsBuilder_;
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       * @return Whether the sectionRefs field is set.
       */
      public boolean hasSectionRefs() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       * @return The sectionRefs.
       */
      public doris.snii.Snii.SniiSectionRefsPB getSectionRefs() {
        if (sectionRefsBuilder_ == null) {
          return sectionRefs_ == null ? doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance() : sectionRefs_;
        } else {
          return sectionRefsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public Builder setSectionRefs(doris.snii.Snii.SniiSectionRefsPB value) {
        if (sectionRefsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sectionRefs_ = value;
        } else {
          sectionRefsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public Builder setSectionRefs(
          doris.snii.Snii.SniiSectionRefsPB.Builder builderForValue) {
        if (sectionRefsBuilder_ == null) {
          sectionRefs_ = builderForValue.build();
        } else {
          sectionRefsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public Builder mergeSectionRefs(doris.snii.Snii.SniiSectionRefsPB value) {
        if (sectionRefsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            sectionRefs_ != null &&
            sectionRefs_ != doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance()) {
            getSectionRefsBuilder().mergeFrom(value);
          } else {
            sectionRefs_ = value;
          }
        } else {
          sectionRefsBuilder_.mergeFrom(value);
        }
        if (sectionRefs_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public Builder clearSectionRefs() {
        bitField0_ = (bitField0_ & ~0x00000004);
        sectionRefs_ = null;
        if (sectionRefsBuilder_ != null) {
          sectionRefsBuilder_.dispose();
          sectionRefsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public doris.snii.Snii.SniiSectionRefsPB.Builder getSectionRefsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSectionRefsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      public doris.snii.Snii.SniiSectionRefsPBOrBuilder getSectionRefsOrBuilder() {
        if (sectionRefsBuilder_ != null) {
          return sectionRefsBuilder_.getMessageOrBuilder();
        } else {
          return sectionRefs_ == null ?
              doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance() : sectionRefs_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiSectionRefsPB section_refs = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiSectionRefsPB, doris.snii.Snii.SniiSectionRefsPB.Builder, doris.snii.Snii.SniiSectionRefsPBOrBuilder> 
          getSectionRefsFieldBuilder() {
        if (sectionRefsBuilder_ == null) {
          sectionRefsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiSectionRefsPB, doris.snii.Snii.SniiSectionRefsPB.Builder, doris.snii.Snii.SniiSectionRefsPBOrBuilder>(
                  getSectionRefs(),
                  getParentForChildren(),
                  isClean());
          sectionRefs_ = null;
        }
        return sectionRefsBuilder_;
      }

      private com.google.protobuf.ByteString legacyCommonGrams_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
       * </pre>
       *
       * <code>optional bytes legacy_common_grams = 4;</code>
       * @return Whether the legacyCommonGrams field is set.
       */
      @java.lang.Override
      public boolean hasLegacyCommonGrams() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
       * </pre>
       *
       * <code>optional bytes legacy_common_grams = 4;</code>
       * @return The legacyCommonGrams.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getLegacyCommonGrams() {
        return legacyCommonGrams_;
      }
      /**
       * <pre>
       * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
       * </pre>
       *
       * <code>optional bytes legacy_common_grams = 4;</code>
       * @param value The legacyCommonGrams to set.
       * @return This builder for chaining.
       */
      public Builder setLegacyCommonGrams(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        legacyCommonGrams_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Preserve these wire slots so readers can reject unsupported CommonGrams segments.
       * </pre>
       *
       * <code>optional bytes legacy_common_grams = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLegacyCommonGrams() {
        bitField0_ = (bitField0_ & ~0x00000008);
        legacyCommonGrams_ = getDefaultInstance().getLegacyCommonGrams();
        onChanged();
        return this;
      }

      private int legacyCommonGramsPostingPolicy_ ;
      /**
       * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
       * @return Whether the legacyCommonGramsPostingPolicy field is set.
       */
      @java.lang.Override
      public boolean hasLegacyCommonGramsPostingPolicy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
       * @return The legacyCommonGramsPostingPolicy.
       */
      @java.lang.Override
      public int getLegacyCommonGramsPostingPolicy() {
        return legacyCommonGramsPostingPolicy_;
      }
      /**
       * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
       * @param value The legacyCommonGramsPostingPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setLegacyCommonGramsPostingPolicy(int value) {

        legacyCommonGramsPostingPolicy_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 legacy_common_grams_posting_policy = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearLegacyCommonGramsPostingPolicy() {
        bitField0_ = (bitField0_ & ~0x00000010);
        legacyCommonGramsPostingPolicy_ = 0;
        onChanged();
        return this;
      }

      private doris.snii.Snii.SniiGramSchemePB gramScheme_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiGramSchemePB, doris.snii.Snii.SniiGramSchemePB.Builder, doris.snii.Snii.SniiGramSchemePBOrBuilder> gramSchemeBuilder_;
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       * @return Whether the gramScheme field is set.
       */
      public boolean hasGramScheme() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       * @return The gramScheme.
       */
      public doris.snii.Snii.SniiGramSchemePB getGramScheme() {
        if (gramSchemeBuilder_ == null) {
          return gramScheme_ == null ? doris.snii.Snii.SniiGramSchemePB.getDefaultInstance() : gramScheme_;
        } else {
          return gramSchemeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public Builder setGramScheme(doris.snii.Snii.SniiGramSchemePB value) {
        if (gramSchemeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gramScheme_ = value;
        } else {
          gramSchemeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public Builder setGramScheme(
          doris.snii.Snii.SniiGramSchemePB.Builder builderForValue) {
        if (gramSchemeBuilder_ == null) {
          gramScheme_ = builderForValue.build();
        } else {
          gramSchemeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public Builder mergeGramScheme(doris.snii.Snii.SniiGramSchemePB value) {
        if (gramSchemeBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            gramScheme_ != null &&
            gramScheme_ != doris.snii.Snii.SniiGramSchemePB.getDefaultInstance()) {
            getGramSchemeBuilder().mergeFrom(value);
          } else {
            gramScheme_ = value;
          }
        } else {
          gramSchemeBuilder_.mergeFrom(value);
        }
        if (gramScheme_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public Builder clearGramScheme() {
        bitField0_ = (bitField0_ & ~0x00000020);
        gramScheme_ = null;
        if (gramSchemeBuilder_ != null) {
          gramSchemeBuilder_.dispose();
          gramSchemeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public doris.snii.Snii.SniiGramSchemePB.Builder getGramSchemeBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getGramSchemeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      public doris.snii.Snii.SniiGramSchemePBOrBuilder getGramSchemeOrBuilder() {
        if (gramSchemeBuilder_ != null) {
          return gramSchemeBuilder_.getMessageOrBuilder();
        } else {
          return gramScheme_ == null ?
              doris.snii.Snii.SniiGramSchemePB.getDefaultInstance() : gramScheme_;
        }
      }
      /**
       * <pre>
       * Stores the resolved scheme of a gram-family index. Omit it for other
       * indexes to preserve their wire bytes.
       * </pre>
       *
       * <code>optional .doris.snii.SniiGramSchemePB gram_scheme = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiGramSchemePB, doris.snii.Snii.SniiGramSchemePB.Builder, doris.snii.Snii.SniiGramSchemePBOrBuilder> 
          getGramSchemeFieldBuilder() {
        if (gramSchemeBuilder_ == null) {
          gramSchemeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiGramSchemePB, doris.snii.Snii.SniiGramSchemePB.Builder, doris.snii.Snii.SniiGramSchemePBOrBuilder>(
                  getGramScheme(),
                  getParentForChildren(),
                  isClean());
          gramScheme_ = null;
        }
        return gramSchemeBuilder_;
      }

      private doris.snii.Snii.SniiHighDfTermsPB highDfTerms_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiHighDfTermsPB, doris.snii.Snii.SniiHighDfTermsPB.Builder, doris.snii.Snii.SniiHighDfTermsPBOrBuilder> highDfTermsBuilder_;
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       * @return Whether the highDfTerms field is set.
       */
      public boolean hasHighDfTerms() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       * @return The highDfTerms.
       */
      public doris.snii.Snii.SniiHighDfTermsPB getHighDfTerms() {
        if (highDfTermsBuilder_ == null) {
          return highDfTerms_ == null ? doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance() : highDfTerms_;
        } else {
          return highDfTermsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public Builder setHighDfTerms(doris.snii.Snii.SniiHighDfTermsPB value) {
        if (highDfTermsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          highDfTerms_ = value;
        } else {
          highDfTermsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public Builder setHighDfTerms(
          doris.snii.Snii.SniiHighDfTermsPB.Builder builderForValue) {
        if (highDfTermsBuilder_ == null) {
          highDfTerms_ = builderForValue.build();
        } else {
          highDfTermsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public Builder mergeHighDfTerms(doris.snii.Snii.SniiHighDfTermsPB value) {
        if (highDfTermsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            highDfTerms_ != null &&
            highDfTerms_ != doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance()) {
            getHighDfTermsBuilder().mergeFrom(value);
          } else {
            highDfTerms_ = value;
          }
        } else {
          highDfTermsBuilder_.mergeFrom(value);
        }
        if (highDfTerms_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public Builder clearHighDfTerms() {
        bitField0_ = (bitField0_ & ~0x00000040);
        highDfTerms_ = null;
        if (highDfTermsBuilder_ != null) {
          highDfTermsBuilder_.dispose();
          highDfTermsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public doris.snii.Snii.SniiHighDfTermsPB.Builder getHighDfTermsBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getHighDfTermsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      public doris.snii.Snii.SniiHighDfTermsPBOrBuilder getHighDfTermsOrBuilder() {
        if (highDfTermsBuilder_ != null) {
          return highDfTermsBuilder_.getMessageOrBuilder();
        } else {
          return highDfTerms_ == null ?
              doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance() : highDfTerms_;
        }
      }
      /**
       * <pre>
       * Summarizes high-frequency terms for the query cost gate.
       * </pre>
       *
       * <code>optional .doris.snii.SniiHighDfTermsPB high_df_terms = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiHighDfTermsPB, doris.snii.Snii.SniiHighDfTermsPB.Builder, doris.snii.Snii.SniiHighDfTermsPBOrBuilder> 
          getHighDfTermsFieldBuilder() {
        if (highDfTermsBuilder_ == null) {
          highDfTermsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiHighDfTermsPB, doris.snii.Snii.SniiHighDfTermsPB.Builder, doris.snii.Snii.SniiHighDfTermsPBOrBuilder>(
                  getHighDfTerms(),
                  getParentForChildren(),
                  isClean());
          highDfTerms_ = null;
        }
        return highDfTermsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiCoreMetadataPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiCoreMetadataPB)
    private static final doris.snii.Snii.SniiCoreMetadataPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiCoreMetadataPB();
    }

    public static doris.snii.Snii.SniiCoreMetadataPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiCoreMetadataPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiCoreMetadataPB>() {
      @java.lang.Override
      public SniiCoreMetadataPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiCoreMetadataPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiCoreMetadataPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiCoreMetadataPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiHighDfTermsPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiHighDfTermsPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @return A list containing the termHash.
     */
    java.util.List<java.lang.Long> getTermHashList();
    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @return The count of termHash.
     */
    int getTermHashCount();
    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The termHash at the given index.
     */
    long getTermHash(int index);

    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @return A list containing the df.
     */
    java.util.List<java.lang.Integer> getDfList();
    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @return The count of df.
     */
    int getDfCount();
    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The df at the given index.
     */
    int getDf(int index);

    /**
     * <pre>
     * Upper bound for terms absent from this digest.
     * </pre>
     *
     * <code>optional uint32 df_ceiling = 3;</code>
     * @return Whether the dfCeiling field is set.
     */
    boolean hasDfCeiling();
    /**
     * <pre>
     * Upper bound for terms absent from this digest.
     * </pre>
     *
     * <code>optional uint32 df_ceiling = 3;</code>
     * @return The dfCeiling.
     */
    int getDfCeiling();
  }
  /**
   * <pre>
   * Stores high-frequency terms by hash and document frequency. The digest bounds
   * candidate counts without reading dictionary blocks.
   * </pre>
   *
   * Protobuf type {@code doris.snii.SniiHighDfTermsPB}
   */
  public static final class SniiHighDfTermsPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiHighDfTermsPB)
      SniiHighDfTermsPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiHighDfTermsPB.newBuilder() to construct.
    private SniiHighDfTermsPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiHighDfTermsPB() {
      termHash_ = emptyLongList();
      df_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiHighDfTermsPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiHighDfTermsPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiHighDfTermsPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiHighDfTermsPB.class, doris.snii.Snii.SniiHighDfTermsPB.Builder.class);
    }

    private int bitField0_;
    public static final int TERM_HASH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList termHash_ =
        emptyLongList();
    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @return A list containing the termHash.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getTermHashList() {
      return termHash_;
    }
    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @return The count of termHash.
     */
    public int getTermHashCount() {
      return termHash_.size();
    }
    /**
     * <pre>
     * Sorted by bsbf_hash for binary search.
     * </pre>
     *
     * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The termHash at the given index.
     */
    public long getTermHash(int index) {
      return termHash_.getLong(index);
    }
    private int termHashMemoizedSerializedSize = -1;

    public static final int DF_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList df_ =
        emptyIntList();
    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @return A list containing the df.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getDfList() {
      return df_;
    }
    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @return The count of df.
     */
    public int getDfCount() {
      return df_.size();
    }
    /**
     * <pre>
     * Document frequencies, parallel to term_hash.
     * </pre>
     *
     * <code>repeated uint32 df = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The df at the given index.
     */
    public int getDf(int index) {
      return df_.getInt(index);
    }
    private int dfMemoizedSerializedSize = -1;

    public static final int DF_CEILING_FIELD_NUMBER = 3;
    private int dfCeiling_ = 0;
    /**
     * <pre>
     * Upper bound for terms absent from this digest.
     * </pre>
     *
     * <code>optional uint32 df_ceiling = 3;</code>
     * @return Whether the dfCeiling field is set.
     */
    @java.lang.Override
    public boolean hasDfCeiling() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Upper bound for terms absent from this digest.
     * </pre>
     *
     * <code>optional uint32 df_ceiling = 3;</code>
     * @return The dfCeiling.
     */
    @java.lang.Override
    public int getDfCeiling() {
      return dfCeiling_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTermHashList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(termHashMemoizedSerializedSize);
      }
      for (int i = 0; i < termHash_.size(); i++) {
        output.writeFixed64NoTag(termHash_.getLong(i));
      }
      if (getDfList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(dfMemoizedSerializedSize);
      }
      for (int i = 0; i < df_.size(); i++) {
        output.writeUInt32NoTag(df_.getInt(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(3, dfCeiling_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        dataSize = 8 * getTermHashList().size();
        size += dataSize;
        if (!getTermHashList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        termHashMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < df_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(df_.getInt(i));
        }
        size += dataSize;
        if (!getDfList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        dfMemoizedSerializedSize = dataSize;
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, dfCeiling_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiHighDfTermsPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiHighDfTermsPB other = (doris.snii.Snii.SniiHighDfTermsPB) obj;

      if (!getTermHashList()
          .equals(other.getTermHashList())) return false;
      if (!getDfList()
          .equals(other.getDfList())) return false;
      if (hasDfCeiling() != other.hasDfCeiling()) return false;
      if (hasDfCeiling()) {
        if (getDfCeiling()
            != other.getDfCeiling()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTermHashCount() > 0) {
        hash = (37 * hash) + TERM_HASH_FIELD_NUMBER;
        hash = (53 * hash) + getTermHashList().hashCode();
      }
      if (getDfCount() > 0) {
        hash = (37 * hash) + DF_FIELD_NUMBER;
        hash = (53 * hash) + getDfList().hashCode();
      }
      if (hasDfCeiling()) {
        hash = (37 * hash) + DF_CEILING_FIELD_NUMBER;
        hash = (53 * hash) + getDfCeiling();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiHighDfTermsPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiHighDfTermsPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiHighDfTermsPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiHighDfTermsPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Stores high-frequency terms by hash and document frequency. The digest bounds
     * candidate counts without reading dictionary blocks.
     * </pre>
     *
     * Protobuf type {@code doris.snii.SniiHighDfTermsPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiHighDfTermsPB)
        doris.snii.Snii.SniiHighDfTermsPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiHighDfTermsPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiHighDfTermsPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiHighDfTermsPB.class, doris.snii.Snii.SniiHighDfTermsPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiHighDfTermsPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        termHash_ = emptyLongList();
        df_ = emptyIntList();
        dfCeiling_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiHighDfTermsPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiHighDfTermsPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiHighDfTermsPB build() {
        doris.snii.Snii.SniiHighDfTermsPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiHighDfTermsPB buildPartial() {
        doris.snii.Snii.SniiHighDfTermsPB result = new doris.snii.Snii.SniiHighDfTermsPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiHighDfTermsPB result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          termHash_.makeImmutable();
          result.termHash_ = termHash_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          df_.makeImmutable();
          result.df_ = df_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.dfCeiling_ = dfCeiling_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiHighDfTermsPB) {
          return mergeFrom((doris.snii.Snii.SniiHighDfTermsPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiHighDfTermsPB other) {
        if (other == doris.snii.Snii.SniiHighDfTermsPB.getDefaultInstance()) return this;
        if (!other.termHash_.isEmpty()) {
          if (termHash_.isEmpty()) {
            termHash_ = other.termHash_;
            termHash_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureTermHashIsMutable();
            termHash_.addAll(other.termHash_);
          }
          onChanged();
        }
        if (!other.df_.isEmpty()) {
          if (df_.isEmpty()) {
            df_ = other.df_;
            df_.makeImmutable();
            bitField0_ |= 0x00000002;
          } else {
            ensureDfIsMutable();
            df_.addAll(other.df_);
          }
          onChanged();
        }
        if (other.hasDfCeiling()) {
          setDfCeiling(other.getDfCeiling());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                long v = input.readFixed64();
                ensureTermHashIsMutable();
                termHash_.addLong(v);
                break;
              } // case 9
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                int alloc = length > 4096 ? 4096 : length;
                ensureTermHashIsMutable(alloc / 8);
                while (input.getBytesUntilLimit() > 0) {
                  termHash_.addLong(input.readFixed64());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 16: {
                int v = input.readUInt32();
                ensureDfIsMutable();
                df_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureDfIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  df_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 24: {
                dfCeiling_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.LongList termHash_ = emptyLongList();
      private void ensureTermHashIsMutable() {
        if (!termHash_.isModifiable()) {
          termHash_ = makeMutableCopy(termHash_);
        }
        bitField0_ |= 0x00000001;
      }
      private void ensureTermHashIsMutable(int capacity) {
        if (!termHash_.isModifiable()) {
          termHash_ = makeMutableCopy(termHash_, capacity);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @return A list containing the termHash.
       */
      public java.util.List<java.lang.Long>
          getTermHashList() {
        termHash_.makeImmutable();
        return termHash_;
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @return The count of termHash.
       */
      public int getTermHashCount() {
        return termHash_.size();
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The termHash at the given index.
       */
      public long getTermHash(int index) {
        return termHash_.getLong(index);
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The termHash to set.
       * @return This builder for chaining.
       */
      public Builder setTermHash(
          int index, long value) {

        ensureTermHashIsMutable();
        termHash_.setLong(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @param value The termHash to add.
       * @return This builder for chaining.
       */
      public Builder addTermHash(long value) {

        ensureTermHashIsMutable();
        termHash_.addLong(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @param values The termHash to add.
       * @return This builder for chaining.
       */
      public Builder addAllTermHash(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureTermHashIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, termHash_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sorted by bsbf_hash for binary search.
       * </pre>
       *
       * <code>repeated fixed64 term_hash = 1 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearTermHash() {
        termHash_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList df_ = emptyIntList();
      private void ensureDfIsMutable() {
        if (!df_.isModifiable()) {
          df_ = makeMutableCopy(df_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @return A list containing the df.
       */
      public java.util.List<java.lang.Integer>
          getDfList() {
        df_.makeImmutable();
        return df_;
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @return The count of df.
       */
      public int getDfCount() {
        return df_.size();
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The df at the given index.
       */
      public int getDf(int index) {
        return df_.getInt(index);
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The df to set.
       * @return This builder for chaining.
       */
      public Builder setDf(
          int index, int value) {

        ensureDfIsMutable();
        df_.setInt(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @param value The df to add.
       * @return This builder for chaining.
       */
      public Builder addDf(int value) {

        ensureDfIsMutable();
        df_.addInt(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @param values The df to add.
       * @return This builder for chaining.
       */
      public Builder addAllDf(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureDfIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, df_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Document frequencies, parallel to term_hash.
       * </pre>
       *
       * <code>repeated uint32 df = 2 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearDf() {
        df_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private int dfCeiling_ ;
      /**
       * <pre>
       * Upper bound for terms absent from this digest.
       * </pre>
       *
       * <code>optional uint32 df_ceiling = 3;</code>
       * @return Whether the dfCeiling field is set.
       */
      @java.lang.Override
      public boolean hasDfCeiling() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Upper bound for terms absent from this digest.
       * </pre>
       *
       * <code>optional uint32 df_ceiling = 3;</code>
       * @return The dfCeiling.
       */
      @java.lang.Override
      public int getDfCeiling() {
        return dfCeiling_;
      }
      /**
       * <pre>
       * Upper bound for terms absent from this digest.
       * </pre>
       *
       * <code>optional uint32 df_ceiling = 3;</code>
       * @param value The dfCeiling to set.
       * @return This builder for chaining.
       */
      public Builder setDfCeiling(int value) {

        dfCeiling_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Upper bound for terms absent from this digest.
       * </pre>
       *
       * <code>optional uint32 df_ceiling = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDfCeiling() {
        bitField0_ = (bitField0_ & ~0x00000004);
        dfCeiling_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiHighDfTermsPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiHighDfTermsPB)
    private static final doris.snii.Snii.SniiHighDfTermsPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiHighDfTermsPB();
    }

    public static doris.snii.Snii.SniiHighDfTermsPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiHighDfTermsPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiHighDfTermsPB>() {
      @java.lang.Override
      public SniiHighDfTermsPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiHighDfTermsPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiHighDfTermsPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiHighDfTermsPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiStatsPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiStatsPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint64 doc_count = 1;</code>
     * @return Whether the docCount field is set.
     */
    boolean hasDocCount();
    /**
     * <code>optional uint64 doc_count = 1;</code>
     * @return The docCount.
     */
    long getDocCount();

    /**
     * <code>optional uint64 indexed_doc_count = 2;</code>
     * @return Whether the indexedDocCount field is set.
     */
    boolean hasIndexedDocCount();
    /**
     * <code>optional uint64 indexed_doc_count = 2;</code>
     * @return The indexedDocCount.
     */
    long getIndexedDocCount();

    /**
     * <code>optional uint64 term_count = 3;</code>
     * @return Whether the termCount field is set.
     */
    boolean hasTermCount();
    /**
     * <code>optional uint64 term_count = 3;</code>
     * @return The termCount.
     */
    long getTermCount();

    /**
     * <code>optional uint64 null_count = 4;</code>
     * @return Whether the nullCount field is set.
     */
    boolean hasNullCount();
    /**
     * <code>optional uint64 null_count = 4;</code>
     * @return The nullCount.
     */
    long getNullCount();

    /**
     * <code>optional uint64 sum_total_term_freq = 5;</code>
     * @return Whether the sumTotalTermFreq field is set.
     */
    boolean hasSumTotalTermFreq();
    /**
     * <code>optional uint64 sum_total_term_freq = 5;</code>
     * @return The sumTotalTermFreq.
     */
    long getSumTotalTermFreq();
  }
  /**
   * <pre>
   * Preserve existing wire tags when adding statistics.
   * </pre>
   *
   * Protobuf type {@code doris.snii.SniiStatsPB}
   */
  public static final class SniiStatsPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiStatsPB)
      SniiStatsPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiStatsPB.newBuilder() to construct.
    private SniiStatsPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiStatsPB() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiStatsPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiStatsPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiStatsPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiStatsPB.class, doris.snii.Snii.SniiStatsPB.Builder.class);
    }

    private int bitField0_;
    public static final int DOC_COUNT_FIELD_NUMBER = 1;
    private long docCount_ = 0L;
    /**
     * <code>optional uint64 doc_count = 1;</code>
     * @return Whether the docCount field is set.
     */
    @java.lang.Override
    public boolean hasDocCount() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint64 doc_count = 1;</code>
     * @return The docCount.
     */
    @java.lang.Override
    public long getDocCount() {
      return docCount_;
    }

    public static final int INDEXED_DOC_COUNT_FIELD_NUMBER = 2;
    private long indexedDocCount_ = 0L;
    /**
     * <code>optional uint64 indexed_doc_count = 2;</code>
     * @return Whether the indexedDocCount field is set.
     */
    @java.lang.Override
    public boolean hasIndexedDocCount() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint64 indexed_doc_count = 2;</code>
     * @return The indexedDocCount.
     */
    @java.lang.Override
    public long getIndexedDocCount() {
      return indexedDocCount_;
    }

    public static final int TERM_COUNT_FIELD_NUMBER = 3;
    private long termCount_ = 0L;
    /**
     * <code>optional uint64 term_count = 3;</code>
     * @return Whether the termCount field is set.
     */
    @java.lang.Override
    public boolean hasTermCount() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint64 term_count = 3;</code>
     * @return The termCount.
     */
    @java.lang.Override
    public long getTermCount() {
      return termCount_;
    }

    public static final int NULL_COUNT_FIELD_NUMBER = 4;
    private long nullCount_ = 0L;
    /**
     * <code>optional uint64 null_count = 4;</code>
     * @return Whether the nullCount field is set.
     */
    @java.lang.Override
    public boolean hasNullCount() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint64 null_count = 4;</code>
     * @return The nullCount.
     */
    @java.lang.Override
    public long getNullCount() {
      return nullCount_;
    }

    public static final int SUM_TOTAL_TERM_FREQ_FIELD_NUMBER = 5;
    private long sumTotalTermFreq_ = 0L;
    /**
     * <code>optional uint64 sum_total_term_freq = 5;</code>
     * @return Whether the sumTotalTermFreq field is set.
     */
    @java.lang.Override
    public boolean hasSumTotalTermFreq() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint64 sum_total_term_freq = 5;</code>
     * @return The sumTotalTermFreq.
     */
    @java.lang.Override
    public long getSumTotalTermFreq() {
      return sumTotalTermFreq_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, docCount_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, indexedDocCount_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt64(3, termCount_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt64(4, nullCount_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt64(5, sumTotalTermFreq_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, docCount_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, indexedDocCount_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, termCount_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, nullCount_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, sumTotalTermFreq_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiStatsPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiStatsPB other = (doris.snii.Snii.SniiStatsPB) obj;

      if (hasDocCount() != other.hasDocCount()) return false;
      if (hasDocCount()) {
        if (getDocCount()
            != other.getDocCount()) return false;
      }
      if (hasIndexedDocCount() != other.hasIndexedDocCount()) return false;
      if (hasIndexedDocCount()) {
        if (getIndexedDocCount()
            != other.getIndexedDocCount()) return false;
      }
      if (hasTermCount() != other.hasTermCount()) return false;
      if (hasTermCount()) {
        if (getTermCount()
            != other.getTermCount()) return false;
      }
      if (hasNullCount() != other.hasNullCount()) return false;
      if (hasNullCount()) {
        if (getNullCount()
            != other.getNullCount()) return false;
      }
      if (hasSumTotalTermFreq() != other.hasSumTotalTermFreq()) return false;
      if (hasSumTotalTermFreq()) {
        if (getSumTotalTermFreq()
            != other.getSumTotalTermFreq()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDocCount()) {
        hash = (37 * hash) + DOC_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getDocCount());
      }
      if (hasIndexedDocCount()) {
        hash = (37 * hash) + INDEXED_DOC_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getIndexedDocCount());
      }
      if (hasTermCount()) {
        hash = (37 * hash) + TERM_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTermCount());
      }
      if (hasNullCount()) {
        hash = (37 * hash) + NULL_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNullCount());
      }
      if (hasSumTotalTermFreq()) {
        hash = (37 * hash) + SUM_TOTAL_TERM_FREQ_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSumTotalTermFreq());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiStatsPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiStatsPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiStatsPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiStatsPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiStatsPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Preserve existing wire tags when adding statistics.
     * </pre>
     *
     * Protobuf type {@code doris.snii.SniiStatsPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiStatsPB)
        doris.snii.Snii.SniiStatsPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiStatsPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiStatsPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiStatsPB.class, doris.snii.Snii.SniiStatsPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiStatsPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        docCount_ = 0L;
        indexedDocCount_ = 0L;
        termCount_ = 0L;
        nullCount_ = 0L;
        sumTotalTermFreq_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiStatsPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiStatsPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiStatsPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiStatsPB build() {
        doris.snii.Snii.SniiStatsPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiStatsPB buildPartial() {
        doris.snii.Snii.SniiStatsPB result = new doris.snii.Snii.SniiStatsPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiStatsPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.docCount_ = docCount_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.indexedDocCount_ = indexedDocCount_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.termCount_ = termCount_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.nullCount_ = nullCount_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.sumTotalTermFreq_ = sumTotalTermFreq_;
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiStatsPB) {
          return mergeFrom((doris.snii.Snii.SniiStatsPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiStatsPB other) {
        if (other == doris.snii.Snii.SniiStatsPB.getDefaultInstance()) return this;
        if (other.hasDocCount()) {
          setDocCount(other.getDocCount());
        }
        if (other.hasIndexedDocCount()) {
          setIndexedDocCount(other.getIndexedDocCount());
        }
        if (other.hasTermCount()) {
          setTermCount(other.getTermCount());
        }
        if (other.hasNullCount()) {
          setNullCount(other.getNullCount());
        }
        if (other.hasSumTotalTermFreq()) {
          setSumTotalTermFreq(other.getSumTotalTermFreq());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                docCount_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                indexedDocCount_ = input.readUInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                termCount_ = input.readUInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                nullCount_ = input.readUInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                sumTotalTermFreq_ = input.readUInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long docCount_ ;
      /**
       * <code>optional uint64 doc_count = 1;</code>
       * @return Whether the docCount field is set.
       */
      @java.lang.Override
      public boolean hasDocCount() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint64 doc_count = 1;</code>
       * @return The docCount.
       */
      @java.lang.Override
      public long getDocCount() {
        return docCount_;
      }
      /**
       * <code>optional uint64 doc_count = 1;</code>
       * @param value The docCount to set.
       * @return This builder for chaining.
       */
      public Builder setDocCount(long value) {

        docCount_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 doc_count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        docCount_ = 0L;
        onChanged();
        return this;
      }

      private long indexedDocCount_ ;
      /**
       * <code>optional uint64 indexed_doc_count = 2;</code>
       * @return Whether the indexedDocCount field is set.
       */
      @java.lang.Override
      public boolean hasIndexedDocCount() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint64 indexed_doc_count = 2;</code>
       * @return The indexedDocCount.
       */
      @java.lang.Override
      public long getIndexedDocCount() {
        return indexedDocCount_;
      }
      /**
       * <code>optional uint64 indexed_doc_count = 2;</code>
       * @param value The indexedDocCount to set.
       * @return This builder for chaining.
       */
      public Builder setIndexedDocCount(long value) {

        indexedDocCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 indexed_doc_count = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndexedDocCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexedDocCount_ = 0L;
        onChanged();
        return this;
      }

      private long termCount_ ;
      /**
       * <code>optional uint64 term_count = 3;</code>
       * @return Whether the termCount field is set.
       */
      @java.lang.Override
      public boolean hasTermCount() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint64 term_count = 3;</code>
       * @return The termCount.
       */
      @java.lang.Override
      public long getTermCount() {
        return termCount_;
      }
      /**
       * <code>optional uint64 term_count = 3;</code>
       * @param value The termCount to set.
       * @return This builder for chaining.
       */
      public Builder setTermCount(long value) {

        termCount_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 term_count = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTermCount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        termCount_ = 0L;
        onChanged();
        return this;
      }

      private long nullCount_ ;
      /**
       * <code>optional uint64 null_count = 4;</code>
       * @return Whether the nullCount field is set.
       */
      @java.lang.Override
      public boolean hasNullCount() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint64 null_count = 4;</code>
       * @return The nullCount.
       */
      @java.lang.Override
      public long getNullCount() {
        return nullCount_;
      }
      /**
       * <code>optional uint64 null_count = 4;</code>
       * @param value The nullCount to set.
       * @return This builder for chaining.
       */
      public Builder setNullCount(long value) {

        nullCount_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 null_count = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullCount() {
        bitField0_ = (bitField0_ & ~0x00000008);
        nullCount_ = 0L;
        onChanged();
        return this;
      }

      private long sumTotalTermFreq_ ;
      /**
       * <code>optional uint64 sum_total_term_freq = 5;</code>
       * @return Whether the sumTotalTermFreq field is set.
       */
      @java.lang.Override
      public boolean hasSumTotalTermFreq() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint64 sum_total_term_freq = 5;</code>
       * @return The sumTotalTermFreq.
       */
      @java.lang.Override
      public long getSumTotalTermFreq() {
        return sumTotalTermFreq_;
      }
      /**
       * <code>optional uint64 sum_total_term_freq = 5;</code>
       * @param value The sumTotalTermFreq to set.
       * @return This builder for chaining.
       */
      public Builder setSumTotalTermFreq(long value) {

        sumTotalTermFreq_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 sum_total_term_freq = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSumTotalTermFreq() {
        bitField0_ = (bitField0_ & ~0x00000010);
        sumTotalTermFreq_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiStatsPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiStatsPB)
    private static final doris.snii.Snii.SniiStatsPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiStatsPB();
    }

    public static doris.snii.Snii.SniiStatsPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiStatsPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiStatsPB>() {
      @java.lang.Override
      public SniiStatsPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiStatsPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiStatsPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiStatsPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiRegionRefPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiRegionRefPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    boolean hasOffset();
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <code>optional uint64 length = 2;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <code>optional uint64 length = 2;</code>
     * @return The length.
     */
    long getLength();
  }
  /**
   * Protobuf type {@code doris.snii.SniiRegionRefPB}
   */
  public static final class SniiRegionRefPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiRegionRefPB)
      SniiRegionRefPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiRegionRefPB.newBuilder() to construct.
    private SniiRegionRefPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiRegionRefPB() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiRegionRefPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiRegionRefPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiRegionRefPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiRegionRefPB.class, doris.snii.Snii.SniiRegionRefPB.Builder.class);
    }

    private int bitField0_;
    public static final int OFFSET_FIELD_NUMBER = 1;
    private long offset_ = 0L;
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    @java.lang.Override
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint64 offset = 1;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int LENGTH_FIELD_NUMBER = 2;
    private long length_ = 0L;
    /**
     * <code>optional uint64 length = 2;</code>
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint64 length = 2;</code>
     * @return The length.
     */
    @java.lang.Override
    public long getLength() {
      return length_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, length_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, length_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiRegionRefPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiRegionRefPB other = (doris.snii.Snii.SniiRegionRefPB) obj;

      if (hasOffset() != other.hasOffset()) return false;
      if (hasOffset()) {
        if (getOffset()
            != other.getOffset()) return false;
      }
      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (getLength()
            != other.getLength()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOffset()) {
        hash = (37 * hash) + OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getOffset());
      }
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getLength());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiRegionRefPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiRegionRefPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiRegionRefPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiRegionRefPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.snii.SniiRegionRefPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiRegionRefPB)
        doris.snii.Snii.SniiRegionRefPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiRegionRefPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiRegionRefPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiRegionRefPB.class, doris.snii.Snii.SniiRegionRefPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiRegionRefPB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        offset_ = 0L;
        length_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiRegionRefPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiRegionRefPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiRegionRefPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiRegionRefPB build() {
        doris.snii.Snii.SniiRegionRefPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiRegionRefPB buildPartial() {
        doris.snii.Snii.SniiRegionRefPB result = new doris.snii.Snii.SniiRegionRefPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiRegionRefPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.offset_ = offset_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.length_ = length_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiRegionRefPB) {
          return mergeFrom((doris.snii.Snii.SniiRegionRefPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiRegionRefPB other) {
        if (other == doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) return this;
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (other.hasLength()) {
          setLength(other.getLength());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                offset_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                length_ = input.readUInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long offset_ ;
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {

        offset_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 offset = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000001);
        offset_ = 0L;
        onChanged();
        return this;
      }

      private long length_ ;
      /**
       * <code>optional uint64 length = 2;</code>
       * @return Whether the length field is set.
       */
      @java.lang.Override
      public boolean hasLength() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @return The length.
       */
      @java.lang.Override
      public long getLength() {
        return length_;
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @param value The length to set.
       * @return This builder for chaining.
       */
      public Builder setLength(long value) {

        length_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 length = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000002);
        length_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiRegionRefPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiRegionRefPB)
    private static final doris.snii.Snii.SniiRegionRefPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiRegionRefPB();
    }

    public static doris.snii.Snii.SniiRegionRefPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiRegionRefPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiRegionRefPB>() {
      @java.lang.Override
      public SniiRegionRefPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiRegionRefPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiRegionRefPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiSectionRefsPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiSectionRefsPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     * @return Whether the dictRegion field is set.
     */
    boolean hasDictRegion();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     * @return The dictRegion.
     */
    doris.snii.Snii.SniiRegionRefPB getDictRegion();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     */
    doris.snii.Snii.SniiRegionRefPBOrBuilder getDictRegionOrBuilder();

    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     * @return Whether the postingRegion field is set.
     */
    boolean hasPostingRegion();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     * @return The postingRegion.
     */
    doris.snii.Snii.SniiRegionRefPB getPostingRegion();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     */
    doris.snii.Snii.SniiRegionRefPBOrBuilder getPostingRegionOrBuilder();

    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     * @return Whether the nullBitmap field is set.
     */
    boolean hasNullBitmap();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     * @return The nullBitmap.
     */
    doris.snii.Snii.SniiRegionRefPB getNullBitmap();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     */
    doris.snii.Snii.SniiRegionRefPBOrBuilder getNullBitmapOrBuilder();

    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     * @return Whether the bsbf field is set.
     */
    boolean hasBsbf();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     * @return The bsbf.
     */
    doris.snii.Snii.SniiRegionRefPB getBsbf();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     */
    doris.snii.Snii.SniiRegionRefPBOrBuilder getBsbfOrBuilder();

    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     * @return Whether the norms field is set.
     */
    boolean hasNorms();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     * @return The norms.
     */
    doris.snii.Snii.SniiRegionRefPB getNorms();
    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     */
    doris.snii.Snii.SniiRegionRefPBOrBuilder getNormsOrBuilder();
  }
  /**
   * <pre>
   * Preserve existing wire tags when adding sections.
   * </pre>
   *
   * Protobuf type {@code doris.snii.SniiSectionRefsPB}
   */
  public static final class SniiSectionRefsPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiSectionRefsPB)
      SniiSectionRefsPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiSectionRefsPB.newBuilder() to construct.
    private SniiSectionRefsPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiSectionRefsPB() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiSectionRefsPB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiSectionRefsPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiSectionRefsPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiSectionRefsPB.class, doris.snii.Snii.SniiSectionRefsPB.Builder.class);
    }

    private int bitField0_;
    public static final int DICT_REGION_FIELD_NUMBER = 1;
    private doris.snii.Snii.SniiRegionRefPB dictRegion_;
    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     * @return Whether the dictRegion field is set.
     */
    @java.lang.Override
    public boolean hasDictRegion() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     * @return The dictRegion.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getDictRegion() {
      return dictRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : dictRegion_;
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPBOrBuilder getDictRegionOrBuilder() {
      return dictRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : dictRegion_;
    }

    public static final int POSTING_REGION_FIELD_NUMBER = 2;
    private doris.snii.Snii.SniiRegionRefPB postingRegion_;
    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     * @return Whether the postingRegion field is set.
     */
    @java.lang.Override
    public boolean hasPostingRegion() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     * @return The postingRegion.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getPostingRegion() {
      return postingRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : postingRegion_;
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPBOrBuilder getPostingRegionOrBuilder() {
      return postingRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : postingRegion_;
    }

    public static final int NULL_BITMAP_FIELD_NUMBER = 3;
    private doris.snii.Snii.SniiRegionRefPB nullBitmap_;
    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     * @return Whether the nullBitmap field is set.
     */
    @java.lang.Override
    public boolean hasNullBitmap() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     * @return The nullBitmap.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getNullBitmap() {
      return nullBitmap_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : nullBitmap_;
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPBOrBuilder getNullBitmapOrBuilder() {
      return nullBitmap_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : nullBitmap_;
    }

    public static final int BSBF_FIELD_NUMBER = 4;
    private doris.snii.Snii.SniiRegionRefPB bsbf_;
    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     * @return Whether the bsbf field is set.
     */
    @java.lang.Override
    public boolean hasBsbf() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     * @return The bsbf.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getBsbf() {
      return bsbf_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : bsbf_;
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPBOrBuilder getBsbfOrBuilder() {
      return bsbf_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : bsbf_;
    }

    public static final int NORMS_FIELD_NUMBER = 5;
    private doris.snii.Snii.SniiRegionRefPB norms_;
    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     * @return Whether the norms field is set.
     */
    @java.lang.Override
    public boolean hasNorms() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     * @return The norms.
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPB getNorms() {
      return norms_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : norms_;
    }
    /**
     * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
     */
    @java.lang.Override
    public doris.snii.Snii.SniiRegionRefPBOrBuilder getNormsOrBuilder() {
      return norms_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : norms_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getDictRegion());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPostingRegion());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getNullBitmap());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getBsbf());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getNorms());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDictRegion());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPostingRegion());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getNullBitmap());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getBsbf());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getNorms());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiSectionRefsPB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiSectionRefsPB other = (doris.snii.Snii.SniiSectionRefsPB) obj;

      if (hasDictRegion() != other.hasDictRegion()) return false;
      if (hasDictRegion()) {
        if (!getDictRegion()
            .equals(other.getDictRegion())) return false;
      }
      if (hasPostingRegion() != other.hasPostingRegion()) return false;
      if (hasPostingRegion()) {
        if (!getPostingRegion()
            .equals(other.getPostingRegion())) return false;
      }
      if (hasNullBitmap() != other.hasNullBitmap()) return false;
      if (hasNullBitmap()) {
        if (!getNullBitmap()
            .equals(other.getNullBitmap())) return false;
      }
      if (hasBsbf() != other.hasBsbf()) return false;
      if (hasBsbf()) {
        if (!getBsbf()
            .equals(other.getBsbf())) return false;
      }
      if (hasNorms() != other.hasNorms()) return false;
      if (hasNorms()) {
        if (!getNorms()
            .equals(other.getNorms())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDictRegion()) {
        hash = (37 * hash) + DICT_REGION_FIELD_NUMBER;
        hash = (53 * hash) + getDictRegion().hashCode();
      }
      if (hasPostingRegion()) {
        hash = (37 * hash) + POSTING_REGION_FIELD_NUMBER;
        hash = (53 * hash) + getPostingRegion().hashCode();
      }
      if (hasNullBitmap()) {
        hash = (37 * hash) + NULL_BITMAP_FIELD_NUMBER;
        hash = (53 * hash) + getNullBitmap().hashCode();
      }
      if (hasBsbf()) {
        hash = (37 * hash) + BSBF_FIELD_NUMBER;
        hash = (53 * hash) + getBsbf().hashCode();
      }
      if (hasNorms()) {
        hash = (37 * hash) + NORMS_FIELD_NUMBER;
        hash = (53 * hash) + getNorms().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiSectionRefsPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiSectionRefsPB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiSectionRefsPB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiSectionRefsPB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Preserve existing wire tags when adding sections.
     * </pre>
     *
     * Protobuf type {@code doris.snii.SniiSectionRefsPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiSectionRefsPB)
        doris.snii.Snii.SniiSectionRefsPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiSectionRefsPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiSectionRefsPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiSectionRefsPB.class, doris.snii.Snii.SniiSectionRefsPB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiSectionRefsPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDictRegionFieldBuilder();
          getPostingRegionFieldBuilder();
          getNullBitmapFieldBuilder();
          getBsbfFieldBuilder();
          getNormsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        dictRegion_ = null;
        if (dictRegionBuilder_ != null) {
          dictRegionBuilder_.dispose();
          dictRegionBuilder_ = null;
        }
        postingRegion_ = null;
        if (postingRegionBuilder_ != null) {
          postingRegionBuilder_.dispose();
          postingRegionBuilder_ = null;
        }
        nullBitmap_ = null;
        if (nullBitmapBuilder_ != null) {
          nullBitmapBuilder_.dispose();
          nullBitmapBuilder_ = null;
        }
        bsbf_ = null;
        if (bsbfBuilder_ != null) {
          bsbfBuilder_.dispose();
          bsbfBuilder_ = null;
        }
        norms_ = null;
        if (normsBuilder_ != null) {
          normsBuilder_.dispose();
          normsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiSectionRefsPB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiSectionRefsPB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiSectionRefsPB build() {
        doris.snii.Snii.SniiSectionRefsPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiSectionRefsPB buildPartial() {
        doris.snii.Snii.SniiSectionRefsPB result = new doris.snii.Snii.SniiSectionRefsPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiSectionRefsPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.dictRegion_ = dictRegionBuilder_ == null
              ? dictRegion_
              : dictRegionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.postingRegion_ = postingRegionBuilder_ == null
              ? postingRegion_
              : postingRegionBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullBitmap_ = nullBitmapBuilder_ == null
              ? nullBitmap_
              : nullBitmapBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.bsbf_ = bsbfBuilder_ == null
              ? bsbf_
              : bsbfBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.norms_ = normsBuilder_ == null
              ? norms_
              : normsBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiSectionRefsPB) {
          return mergeFrom((doris.snii.Snii.SniiSectionRefsPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiSectionRefsPB other) {
        if (other == doris.snii.Snii.SniiSectionRefsPB.getDefaultInstance()) return this;
        if (other.hasDictRegion()) {
          mergeDictRegion(other.getDictRegion());
        }
        if (other.hasPostingRegion()) {
          mergePostingRegion(other.getPostingRegion());
        }
        if (other.hasNullBitmap()) {
          mergeNullBitmap(other.getNullBitmap());
        }
        if (other.hasBsbf()) {
          mergeBsbf(other.getBsbf());
        }
        if (other.hasNorms()) {
          mergeNorms(other.getNorms());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDictRegionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPostingRegionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getNullBitmapFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getBsbfFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getNormsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private doris.snii.Snii.SniiRegionRefPB dictRegion_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> dictRegionBuilder_;
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       * @return Whether the dictRegion field is set.
       */
      public boolean hasDictRegion() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       * @return The dictRegion.
       */
      public doris.snii.Snii.SniiRegionRefPB getDictRegion() {
        if (dictRegionBuilder_ == null) {
          return dictRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : dictRegion_;
        } else {
          return dictRegionBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public Builder setDictRegion(doris.snii.Snii.SniiRegionRefPB value) {
        if (dictRegionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dictRegion_ = value;
        } else {
          dictRegionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public Builder setDictRegion(
          doris.snii.Snii.SniiRegionRefPB.Builder builderForValue) {
        if (dictRegionBuilder_ == null) {
          dictRegion_ = builderForValue.build();
        } else {
          dictRegionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public Builder mergeDictRegion(doris.snii.Snii.SniiRegionRefPB value) {
        if (dictRegionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            dictRegion_ != null &&
            dictRegion_ != doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) {
            getDictRegionBuilder().mergeFrom(value);
          } else {
            dictRegion_ = value;
          }
        } else {
          dictRegionBuilder_.mergeFrom(value);
        }
        if (dictRegion_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public Builder clearDictRegion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        dictRegion_ = null;
        if (dictRegionBuilder_ != null) {
          dictRegionBuilder_.dispose();
          dictRegionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public doris.snii.Snii.SniiRegionRefPB.Builder getDictRegionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDictRegionFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      public doris.snii.Snii.SniiRegionRefPBOrBuilder getDictRegionOrBuilder() {
        if (dictRegionBuilder_ != null) {
          return dictRegionBuilder_.getMessageOrBuilder();
        } else {
          return dictRegion_ == null ?
              doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : dictRegion_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB dict_region = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> 
          getDictRegionFieldBuilder() {
        if (dictRegionBuilder_ == null) {
          dictRegionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder>(
                  getDictRegion(),
                  getParentForChildren(),
                  isClean());
          dictRegion_ = null;
        }
        return dictRegionBuilder_;
      }

      private doris.snii.Snii.SniiRegionRefPB postingRegion_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> postingRegionBuilder_;
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       * @return Whether the postingRegion field is set.
       */
      public boolean hasPostingRegion() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       * @return The postingRegion.
       */
      public doris.snii.Snii.SniiRegionRefPB getPostingRegion() {
        if (postingRegionBuilder_ == null) {
          return postingRegion_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : postingRegion_;
        } else {
          return postingRegionBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public Builder setPostingRegion(doris.snii.Snii.SniiRegionRefPB value) {
        if (postingRegionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          postingRegion_ = value;
        } else {
          postingRegionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public Builder setPostingRegion(
          doris.snii.Snii.SniiRegionRefPB.Builder builderForValue) {
        if (postingRegionBuilder_ == null) {
          postingRegion_ = builderForValue.build();
        } else {
          postingRegionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public Builder mergePostingRegion(doris.snii.Snii.SniiRegionRefPB value) {
        if (postingRegionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            postingRegion_ != null &&
            postingRegion_ != doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) {
            getPostingRegionBuilder().mergeFrom(value);
          } else {
            postingRegion_ = value;
          }
        } else {
          postingRegionBuilder_.mergeFrom(value);
        }
        if (postingRegion_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public Builder clearPostingRegion() {
        bitField0_ = (bitField0_ & ~0x00000002);
        postingRegion_ = null;
        if (postingRegionBuilder_ != null) {
          postingRegionBuilder_.dispose();
          postingRegionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public doris.snii.Snii.SniiRegionRefPB.Builder getPostingRegionBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPostingRegionFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      public doris.snii.Snii.SniiRegionRefPBOrBuilder getPostingRegionOrBuilder() {
        if (postingRegionBuilder_ != null) {
          return postingRegionBuilder_.getMessageOrBuilder();
        } else {
          return postingRegion_ == null ?
              doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : postingRegion_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB posting_region = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> 
          getPostingRegionFieldBuilder() {
        if (postingRegionBuilder_ == null) {
          postingRegionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder>(
                  getPostingRegion(),
                  getParentForChildren(),
                  isClean());
          postingRegion_ = null;
        }
        return postingRegionBuilder_;
      }

      private doris.snii.Snii.SniiRegionRefPB nullBitmap_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> nullBitmapBuilder_;
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       * @return Whether the nullBitmap field is set.
       */
      public boolean hasNullBitmap() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       * @return The nullBitmap.
       */
      public doris.snii.Snii.SniiRegionRefPB getNullBitmap() {
        if (nullBitmapBuilder_ == null) {
          return nullBitmap_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : nullBitmap_;
        } else {
          return nullBitmapBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public Builder setNullBitmap(doris.snii.Snii.SniiRegionRefPB value) {
        if (nullBitmapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nullBitmap_ = value;
        } else {
          nullBitmapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public Builder setNullBitmap(
          doris.snii.Snii.SniiRegionRefPB.Builder builderForValue) {
        if (nullBitmapBuilder_ == null) {
          nullBitmap_ = builderForValue.build();
        } else {
          nullBitmapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public Builder mergeNullBitmap(doris.snii.Snii.SniiRegionRefPB value) {
        if (nullBitmapBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            nullBitmap_ != null &&
            nullBitmap_ != doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) {
            getNullBitmapBuilder().mergeFrom(value);
          } else {
            nullBitmap_ = value;
          }
        } else {
          nullBitmapBuilder_.mergeFrom(value);
        }
        if (nullBitmap_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public Builder clearNullBitmap() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullBitmap_ = null;
        if (nullBitmapBuilder_ != null) {
          nullBitmapBuilder_.dispose();
          nullBitmapBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public doris.snii.Snii.SniiRegionRefPB.Builder getNullBitmapBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getNullBitmapFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      public doris.snii.Snii.SniiRegionRefPBOrBuilder getNullBitmapOrBuilder() {
        if (nullBitmapBuilder_ != null) {
          return nullBitmapBuilder_.getMessageOrBuilder();
        } else {
          return nullBitmap_ == null ?
              doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : nullBitmap_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB null_bitmap = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> 
          getNullBitmapFieldBuilder() {
        if (nullBitmapBuilder_ == null) {
          nullBitmapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder>(
                  getNullBitmap(),
                  getParentForChildren(),
                  isClean());
          nullBitmap_ = null;
        }
        return nullBitmapBuilder_;
      }

      private doris.snii.Snii.SniiRegionRefPB bsbf_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> bsbfBuilder_;
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       * @return Whether the bsbf field is set.
       */
      public boolean hasBsbf() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       * @return The bsbf.
       */
      public doris.snii.Snii.SniiRegionRefPB getBsbf() {
        if (bsbfBuilder_ == null) {
          return bsbf_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : bsbf_;
        } else {
          return bsbfBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public Builder setBsbf(doris.snii.Snii.SniiRegionRefPB value) {
        if (bsbfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bsbf_ = value;
        } else {
          bsbfBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public Builder setBsbf(
          doris.snii.Snii.SniiRegionRefPB.Builder builderForValue) {
        if (bsbfBuilder_ == null) {
          bsbf_ = builderForValue.build();
        } else {
          bsbfBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public Builder mergeBsbf(doris.snii.Snii.SniiRegionRefPB value) {
        if (bsbfBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            bsbf_ != null &&
            bsbf_ != doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) {
            getBsbfBuilder().mergeFrom(value);
          } else {
            bsbf_ = value;
          }
        } else {
          bsbfBuilder_.mergeFrom(value);
        }
        if (bsbf_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public Builder clearBsbf() {
        bitField0_ = (bitField0_ & ~0x00000008);
        bsbf_ = null;
        if (bsbfBuilder_ != null) {
          bsbfBuilder_.dispose();
          bsbfBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public doris.snii.Snii.SniiRegionRefPB.Builder getBsbfBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getBsbfFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      public doris.snii.Snii.SniiRegionRefPBOrBuilder getBsbfOrBuilder() {
        if (bsbfBuilder_ != null) {
          return bsbfBuilder_.getMessageOrBuilder();
        } else {
          return bsbf_ == null ?
              doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : bsbf_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB bsbf = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> 
          getBsbfFieldBuilder() {
        if (bsbfBuilder_ == null) {
          bsbfBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder>(
                  getBsbf(),
                  getParentForChildren(),
                  isClean());
          bsbf_ = null;
        }
        return bsbfBuilder_;
      }

      private doris.snii.Snii.SniiRegionRefPB norms_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> normsBuilder_;
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       * @return Whether the norms field is set.
       */
      public boolean hasNorms() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       * @return The norms.
       */
      public doris.snii.Snii.SniiRegionRefPB getNorms() {
        if (normsBuilder_ == null) {
          return norms_ == null ? doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : norms_;
        } else {
          return normsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public Builder setNorms(doris.snii.Snii.SniiRegionRefPB value) {
        if (normsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          norms_ = value;
        } else {
          normsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public Builder setNorms(
          doris.snii.Snii.SniiRegionRefPB.Builder builderForValue) {
        if (normsBuilder_ == null) {
          norms_ = builderForValue.build();
        } else {
          normsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public Builder mergeNorms(doris.snii.Snii.SniiRegionRefPB value) {
        if (normsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            norms_ != null &&
            norms_ != doris.snii.Snii.SniiRegionRefPB.getDefaultInstance()) {
            getNormsBuilder().mergeFrom(value);
          } else {
            norms_ = value;
          }
        } else {
          normsBuilder_.mergeFrom(value);
        }
        if (norms_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public Builder clearNorms() {
        bitField0_ = (bitField0_ & ~0x00000010);
        norms_ = null;
        if (normsBuilder_ != null) {
          normsBuilder_.dispose();
          normsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public doris.snii.Snii.SniiRegionRefPB.Builder getNormsBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getNormsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      public doris.snii.Snii.SniiRegionRefPBOrBuilder getNormsOrBuilder() {
        if (normsBuilder_ != null) {
          return normsBuilder_.getMessageOrBuilder();
        } else {
          return norms_ == null ?
              doris.snii.Snii.SniiRegionRefPB.getDefaultInstance() : norms_;
        }
      }
      /**
       * <code>optional .doris.snii.SniiRegionRefPB norms = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder> 
          getNormsFieldBuilder() {
        if (normsBuilder_ == null) {
          normsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.snii.Snii.SniiRegionRefPB, doris.snii.Snii.SniiRegionRefPB.Builder, doris.snii.Snii.SniiRegionRefPBOrBuilder>(
                  getNorms(),
                  getParentForChildren(),
                  isClean());
          norms_ = null;
        }
        return normsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiSectionRefsPB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiSectionRefsPB)
    private static final doris.snii.Snii.SniiSectionRefsPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiSectionRefsPB();
    }

    public static doris.snii.Snii.SniiSectionRefsPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiSectionRefsPB>
        PARSER = new com.google.protobuf.AbstractParser<SniiSectionRefsPB>() {
      @java.lang.Override
      public SniiSectionRefsPB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiSectionRefsPB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiSectionRefsPB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiSectionRefsPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SniiGramSchemePBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.snii.SniiGramSchemePB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * on-disk encoding of GramMode: 1 = dense, 2 = sparse
     * </pre>
     *
     * <code>optional uint32 mode = 1;</code>
     * @return Whether the mode field is set.
     */
    boolean hasMode();
    /**
     * <pre>
     * on-disk encoding of GramMode: 1 = dense, 2 = sparse
     * </pre>
     *
     * <code>optional uint32 mode = 1;</code>
     * @return The mode.
     */
    int getMode();

    /**
     * <code>optional uint32 min_len = 2;</code>
     * @return Whether the minLen field is set.
     */
    boolean hasMinLen();
    /**
     * <code>optional uint32 min_len = 2;</code>
     * @return The minLen.
     */
    int getMinLen();

    /**
     * <code>optional uint32 max_len = 3;</code>
     * @return Whether the maxLen field is set.
     */
    boolean hasMaxLen();
    /**
     * <code>optional uint32 max_len = 3;</code>
     * @return The maxLen.
     */
    int getMaxLen();

    /**
     * <code>optional uint32 density_permille = 4;</code>
     * @return Whether the densityPermille field is set.
     */
    boolean hasDensityPermille();
    /**
     * <code>optional uint32 density_permille = 4;</code>
     * @return The densityPermille.
     */
    int getDensityPermille();

    /**
     * <code>optional bool lower_case = 5;</code>
     * @return Whether the lowerCase field is set.
     */
    boolean hasLowerCase();
    /**
     * <code>optional bool lower_case = 5;</code>
     * @return The lowerCase.
     */
    boolean getLowerCase();

    /**
     * <code>optional uint32 hash_version = 6;</code>
     * @return Whether the hashVersion field is set.
     */
    boolean hasHashVersion();
    /**
     * <code>optional uint32 hash_version = 6;</code>
     * @return The hashVersion.
     */
    int getHashVersion();
  }
  /**
   * <pre>
   * Stores the gram scheme used to write the index, so readers can split query
   * patterns the same way. Auto mode is resolved before serialization.
   * </pre>
   *
   * Protobuf type {@code doris.snii.SniiGramSchemePB}
   */
  public static final class SniiGramSchemePB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.snii.SniiGramSchemePB)
      SniiGramSchemePBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SniiGramSchemePB.newBuilder() to construct.
    private SniiGramSchemePB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SniiGramSchemePB() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SniiGramSchemePB();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.snii.Snii.internal_static_doris_snii_SniiGramSchemePB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.snii.Snii.internal_static_doris_snii_SniiGramSchemePB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.snii.Snii.SniiGramSchemePB.class, doris.snii.Snii.SniiGramSchemePB.Builder.class);
    }

    private int bitField0_;
    public static final int MODE_FIELD_NUMBER = 1;
    private int mode_ = 0;
    /**
     * <pre>
     * on-disk encoding of GramMode: 1 = dense, 2 = sparse
     * </pre>
     *
     * <code>optional uint32 mode = 1;</code>
     * @return Whether the mode field is set.
     */
    @java.lang.Override
    public boolean hasMode() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * on-disk encoding of GramMode: 1 = dense, 2 = sparse
     * </pre>
     *
     * <code>optional uint32 mode = 1;</code>
     * @return The mode.
     */
    @java.lang.Override
    public int getMode() {
      return mode_;
    }

    public static final int MIN_LEN_FIELD_NUMBER = 2;
    private int minLen_ = 0;
    /**
     * <code>optional uint32 min_len = 2;</code>
     * @return Whether the minLen field is set.
     */
    @java.lang.Override
    public boolean hasMinLen() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 min_len = 2;</code>
     * @return The minLen.
     */
    @java.lang.Override
    public int getMinLen() {
      return minLen_;
    }

    public static final int MAX_LEN_FIELD_NUMBER = 3;
    private int maxLen_ = 0;
    /**
     * <code>optional uint32 max_len = 3;</code>
     * @return Whether the maxLen field is set.
     */
    @java.lang.Override
    public boolean hasMaxLen() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint32 max_len = 3;</code>
     * @return The maxLen.
     */
    @java.lang.Override
    public int getMaxLen() {
      return maxLen_;
    }

    public static final int DENSITY_PERMILLE_FIELD_NUMBER = 4;
    private int densityPermille_ = 0;
    /**
     * <code>optional uint32 density_permille = 4;</code>
     * @return Whether the densityPermille field is set.
     */
    @java.lang.Override
    public boolean hasDensityPermille() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 density_permille = 4;</code>
     * @return The densityPermille.
     */
    @java.lang.Override
    public int getDensityPermille() {
      return densityPermille_;
    }

    public static final int LOWER_CASE_FIELD_NUMBER = 5;
    private boolean lowerCase_ = false;
    /**
     * <code>optional bool lower_case = 5;</code>
     * @return Whether the lowerCase field is set.
     */
    @java.lang.Override
    public boolean hasLowerCase() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional bool lower_case = 5;</code>
     * @return The lowerCase.
     */
    @java.lang.Override
    public boolean getLowerCase() {
      return lowerCase_;
    }

    public static final int HASH_VERSION_FIELD_NUMBER = 6;
    private int hashVersion_ = 0;
    /**
     * <code>optional uint32 hash_version = 6;</code>
     * @return Whether the hashVersion field is set.
     */
    @java.lang.Override
    public boolean hasHashVersion() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional uint32 hash_version = 6;</code>
     * @return The hashVersion.
     */
    @java.lang.Override
    public int getHashVersion() {
      return hashVersion_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, mode_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, minLen_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, maxLen_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, densityPermille_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(5, lowerCase_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(6, hashVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, mode_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, minLen_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, maxLen_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, densityPermille_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, lowerCase_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, hashVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof doris.snii.Snii.SniiGramSchemePB)) {
        return super.equals(obj);
      }
      doris.snii.Snii.SniiGramSchemePB other = (doris.snii.Snii.SniiGramSchemePB) obj;

      if (hasMode() != other.hasMode()) return false;
      if (hasMode()) {
        if (getMode()
            != other.getMode()) return false;
      }
      if (hasMinLen() != other.hasMinLen()) return false;
      if (hasMinLen()) {
        if (getMinLen()
            != other.getMinLen()) return false;
      }
      if (hasMaxLen() != other.hasMaxLen()) return false;
      if (hasMaxLen()) {
        if (getMaxLen()
            != other.getMaxLen()) return false;
      }
      if (hasDensityPermille() != other.hasDensityPermille()) return false;
      if (hasDensityPermille()) {
        if (getDensityPermille()
            != other.getDensityPermille()) return false;
      }
      if (hasLowerCase() != other.hasLowerCase()) return false;
      if (hasLowerCase()) {
        if (getLowerCase()
            != other.getLowerCase()) return false;
      }
      if (hasHashVersion() != other.hasHashVersion()) return false;
      if (hasHashVersion()) {
        if (getHashVersion()
            != other.getHashVersion()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMode()) {
        hash = (37 * hash) + MODE_FIELD_NUMBER;
        hash = (53 * hash) + getMode();
      }
      if (hasMinLen()) {
        hash = (37 * hash) + MIN_LEN_FIELD_NUMBER;
        hash = (53 * hash) + getMinLen();
      }
      if (hasMaxLen()) {
        hash = (37 * hash) + MAX_LEN_FIELD_NUMBER;
        hash = (53 * hash) + getMaxLen();
      }
      if (hasDensityPermille()) {
        hash = (37 * hash) + DENSITY_PERMILLE_FIELD_NUMBER;
        hash = (53 * hash) + getDensityPermille();
      }
      if (hasLowerCase()) {
        hash = (37 * hash) + LOWER_CASE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getLowerCase());
      }
      if (hasHashVersion()) {
        hash = (37 * hash) + HASH_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getHashVersion();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static doris.snii.Snii.SniiGramSchemePB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.snii.Snii.SniiGramSchemePB parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.snii.Snii.SniiGramSchemePB parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(doris.snii.Snii.SniiGramSchemePB prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Stores the gram scheme used to write the index, so readers can split query
     * patterns the same way. Auto mode is resolved before serialization.
     * </pre>
     *
     * Protobuf type {@code doris.snii.SniiGramSchemePB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.snii.SniiGramSchemePB)
        doris.snii.Snii.SniiGramSchemePBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.snii.Snii.internal_static_doris_snii_SniiGramSchemePB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.snii.Snii.internal_static_doris_snii_SniiGramSchemePB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.snii.Snii.SniiGramSchemePB.class, doris.snii.Snii.SniiGramSchemePB.Builder.class);
      }

      // Construct using doris.snii.Snii.SniiGramSchemePB.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        mode_ = 0;
        minLen_ = 0;
        maxLen_ = 0;
        densityPermille_ = 0;
        lowerCase_ = false;
        hashVersion_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.snii.Snii.internal_static_doris_snii_SniiGramSchemePB_descriptor;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiGramSchemePB getDefaultInstanceForType() {
        return doris.snii.Snii.SniiGramSchemePB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.snii.Snii.SniiGramSchemePB build() {
        doris.snii.Snii.SniiGramSchemePB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.snii.Snii.SniiGramSchemePB buildPartial() {
        doris.snii.Snii.SniiGramSchemePB result = new doris.snii.Snii.SniiGramSchemePB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.snii.Snii.SniiGramSchemePB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.mode_ = mode_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.minLen_ = minLen_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.maxLen_ = maxLen_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.densityPermille_ = densityPermille_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.lowerCase_ = lowerCase_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.hashVersion_ = hashVersion_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof doris.snii.Snii.SniiGramSchemePB) {
          return mergeFrom((doris.snii.Snii.SniiGramSchemePB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.snii.Snii.SniiGramSchemePB other) {
        if (other == doris.snii.Snii.SniiGramSchemePB.getDefaultInstance()) return this;
        if (other.hasMode()) {
          setMode(other.getMode());
        }
        if (other.hasMinLen()) {
          setMinLen(other.getMinLen());
        }
        if (other.hasMaxLen()) {
          setMaxLen(other.getMaxLen());
        }
        if (other.hasDensityPermille()) {
          setDensityPermille(other.getDensityPermille());
        }
        if (other.hasLowerCase()) {
          setLowerCase(other.getLowerCase());
        }
        if (other.hasHashVersion()) {
          setHashVersion(other.getHashVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                mode_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                minLen_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                maxLen_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                densityPermille_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                lowerCase_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                hashVersion_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int mode_ ;
      /**
       * <pre>
       * on-disk encoding of GramMode: 1 = dense, 2 = sparse
       * </pre>
       *
       * <code>optional uint32 mode = 1;</code>
       * @return Whether the mode field is set.
       */
      @java.lang.Override
      public boolean hasMode() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * on-disk encoding of GramMode: 1 = dense, 2 = sparse
       * </pre>
       *
       * <code>optional uint32 mode = 1;</code>
       * @return The mode.
       */
      @java.lang.Override
      public int getMode() {
        return mode_;
      }
      /**
       * <pre>
       * on-disk encoding of GramMode: 1 = dense, 2 = sparse
       * </pre>
       *
       * <code>optional uint32 mode = 1;</code>
       * @param value The mode to set.
       * @return This builder for chaining.
       */
      public Builder setMode(int value) {

        mode_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * on-disk encoding of GramMode: 1 = dense, 2 = sparse
       * </pre>
       *
       * <code>optional uint32 mode = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMode() {
        bitField0_ = (bitField0_ & ~0x00000001);
        mode_ = 0;
        onChanged();
        return this;
      }

      private int minLen_ ;
      /**
       * <code>optional uint32 min_len = 2;</code>
       * @return Whether the minLen field is set.
       */
      @java.lang.Override
      public boolean hasMinLen() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 min_len = 2;</code>
       * @return The minLen.
       */
      @java.lang.Override
      public int getMinLen() {
        return minLen_;
      }
      /**
       * <code>optional uint32 min_len = 2;</code>
       * @param value The minLen to set.
       * @return This builder for chaining.
       */
      public Builder setMinLen(int value) {

        minLen_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 min_len = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinLen() {
        bitField0_ = (bitField0_ & ~0x00000002);
        minLen_ = 0;
        onChanged();
        return this;
      }

      private int maxLen_ ;
      /**
       * <code>optional uint32 max_len = 3;</code>
       * @return Whether the maxLen field is set.
       */
      @java.lang.Override
      public boolean hasMaxLen() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint32 max_len = 3;</code>
       * @return The maxLen.
       */
      @java.lang.Override
      public int getMaxLen() {
        return maxLen_;
      }
      /**
       * <code>optional uint32 max_len = 3;</code>
       * @param value The maxLen to set.
       * @return This builder for chaining.
       */
      public Builder setMaxLen(int value) {

        maxLen_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 max_len = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxLen() {
        bitField0_ = (bitField0_ & ~0x00000004);
        maxLen_ = 0;
        onChanged();
        return this;
      }

      private int densityPermille_ ;
      /**
       * <code>optional uint32 density_permille = 4;</code>
       * @return Whether the densityPermille field is set.
       */
      @java.lang.Override
      public boolean hasDensityPermille() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 density_permille = 4;</code>
       * @return The densityPermille.
       */
      @java.lang.Override
      public int getDensityPermille() {
        return densityPermille_;
      }
      /**
       * <code>optional uint32 density_permille = 4;</code>
       * @param value The densityPermille to set.
       * @return This builder for chaining.
       */
      public Builder setDensityPermille(int value) {

        densityPermille_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 density_permille = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDensityPermille() {
        bitField0_ = (bitField0_ & ~0x00000008);
        densityPermille_ = 0;
        onChanged();
        return this;
      }

      private boolean lowerCase_ ;
      /**
       * <code>optional bool lower_case = 5;</code>
       * @return Whether the lowerCase field is set.
       */
      @java.lang.Override
      public boolean hasLowerCase() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional bool lower_case = 5;</code>
       * @return The lowerCase.
       */
      @java.lang.Override
      public boolean getLowerCase() {
        return lowerCase_;
      }
      /**
       * <code>optional bool lower_case = 5;</code>
       * @param value The lowerCase to set.
       * @return This builder for chaining.
       */
      public Builder setLowerCase(boolean value) {

        lowerCase_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool lower_case = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearLowerCase() {
        bitField0_ = (bitField0_ & ~0x00000010);
        lowerCase_ = false;
        onChanged();
        return this;
      }

      private int hashVersion_ ;
      /**
       * <code>optional uint32 hash_version = 6;</code>
       * @return Whether the hashVersion field is set.
       */
      @java.lang.Override
      public boolean hasHashVersion() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 hash_version = 6;</code>
       * @return The hashVersion.
       */
      @java.lang.Override
      public int getHashVersion() {
        return hashVersion_;
      }
      /**
       * <code>optional uint32 hash_version = 6;</code>
       * @param value The hashVersion to set.
       * @return This builder for chaining.
       */
      public Builder setHashVersion(int value) {

        hashVersion_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 hash_version = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearHashVersion() {
        bitField0_ = (bitField0_ & ~0x00000020);
        hashVersion_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.snii.SniiGramSchemePB)
    }

    // @@protoc_insertion_point(class_scope:doris.snii.SniiGramSchemePB)
    private static final doris.snii.Snii.SniiGramSchemePB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.snii.Snii.SniiGramSchemePB();
    }

    public static doris.snii.Snii.SniiGramSchemePB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SniiGramSchemePB>
        PARSER = new com.google.protobuf.AbstractParser<SniiGramSchemePB>() {
      @java.lang.Override
      public SniiGramSchemePB parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SniiGramSchemePB> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SniiGramSchemePB> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public doris.snii.Snii.SniiGramSchemePB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiMetadataDirectoryPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiNamedBlobPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiNamedBlobPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiLogicalIndexMetadataPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiBlobRefPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiBlobRefPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiCoreMetadataPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiCoreMetadataPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiHighDfTermsPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiHighDfTermsPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiStatsPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiStatsPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiRegionRefPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiRegionRefPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiSectionRefsPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiSectionRefsPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_snii_SniiGramSchemePB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_snii_SniiGramSchemePB_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\nsnii.proto\022\ndoris.snii\"q\n\027SniiMetadata" +
      "DirectoryPB\022\035\n\021required_features\030\001 \003(\rB\002" +
      "\020\001\0227\n\007indexes\030\002 \003(\0132&.doris.snii.SniiLog" +
      "icalIndexMetadataPB\"O\n\017SniiNamedBlobPB\022\014" +
      "\n\004name\030\001 \001(\014\022\016\n\006offset\030\002 \001(\004\022\016\n\006length\030\003" +
      " \001(\004\022\016\n\006crc32c\030\004 \001(\r\"\272\002\n\032SniiLogicalInde" +
      "xMetadataPB\022\020\n\010index_id\030\001 \001(\004\022\024\n\014index_s" +
      "uffix\030\002 \001(\014\0220\n\rcore_metadata\030\003 \001(\0132\031.dor" +
      "is.snii.SniiBlobRefPB\0225\n\022sampled_term_in" +
      "dex\030\004 \001(\0132\031.doris.snii.SniiBlobRefPB\0227\n\024" +
      "dict_block_directory\030\005 \001(\0132\031.doris.snii." +
      "SniiBlobRefPB\022\014\n\004kind\030\006 \001(\r\022*\n\005files\030\007 \003" +
      "(\0132\033.doris.snii.SniiNamedBlobPB\022\030\n\020dropp" +
      "ed_postings\030\010 \001(\010\"/\n\rSniiBlobRefPB\022\016\n\006of" +
      "fset\030\001 \001(\004\022\016\n\006length\030\002 \001(\004\"\271\002\n\022SniiCoreM" +
      "etadataPB\022\024\n\014index_config\030\001 \001(\r\022&\n\005stats" +
      "\030\002 \001(\0132\027.doris.snii.SniiStatsPB\0223\n\014secti" +
      "on_refs\030\003 \001(\0132\035.doris.snii.SniiSectionRe" +
      "fsPB\022\033\n\023legacy_common_grams\030\004 \001(\014\022*\n\"leg" +
      "acy_common_grams_posting_policy\030\005 \001(\r\0221\n" +
      "\013gram_scheme\030\006 \001(\0132\034.doris.snii.SniiGram" +
      "SchemePB\0224\n\rhigh_df_terms\030\007 \001(\0132\035.doris." +
      "snii.SniiHighDfTermsPB\"N\n\021SniiHighDfTerm" +
      "sPB\022\025\n\tterm_hash\030\001 \003(\006B\002\020\001\022\016\n\002df\030\002 \003(\rB\002" +
      "\020\001\022\022\n\ndf_ceiling\030\003 \001(\r\"\200\001\n\013SniiStatsPB\022\021" +
      "\n\tdoc_count\030\001 \001(\004\022\031\n\021indexed_doc_count\030\002" +
      " \001(\004\022\022\n\nterm_count\030\003 \001(\004\022\022\n\nnull_count\030\004" +
      " \001(\004\022\033\n\023sum_total_term_freq\030\005 \001(\004\"1\n\017Sni" +
      "iRegionRefPB\022\016\n\006offset\030\001 \001(\004\022\016\n\006length\030\002" +
      " \001(\004\"\203\002\n\021SniiSectionRefsPB\0220\n\013dict_regio" +
      "n\030\001 \001(\0132\033.doris.snii.SniiRegionRefPB\0223\n\016" +
      "posting_region\030\002 \001(\0132\033.doris.snii.SniiRe" +
      "gionRefPB\0220\n\013null_bitmap\030\003 \001(\0132\033.doris.s" +
      "nii.SniiRegionRefPB\022)\n\004bsbf\030\004 \001(\0132\033.dori" +
      "s.snii.SniiRegionRefPB\022*\n\005norms\030\005 \001(\0132\033." +
      "doris.snii.SniiRegionRefPB\"\206\001\n\020SniiGramS" +
      "chemePB\022\014\n\004mode\030\001 \001(\r\022\017\n\007min_len\030\002 \001(\r\022\017" +
      "\n\007max_len\030\003 \001(\r\022\030\n\020density_permille\030\004 \001(" +
      "\r\022\022\n\nlower_case\030\005 \001(\010\022\024\n\014hash_version\030\006 " +
      "\001(\r*V\n\026SniiLogicalIndexKindPB\022\026\n\022SNII_KI" +
      "ND_INVERTED\020\000\022\021\n\rSNII_KIND_BKD\020\001\022\021\n\rSNII" +
      "_KIND_ANN\020\002"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_doris_snii_SniiMetadataDirectoryPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiMetadataDirectoryPB_descriptor,
        new java.lang.String[] { "RequiredFeatures", "Indexes", });
    internal_static_doris_snii_SniiNamedBlobPB_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_doris_snii_SniiNamedBlobPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiNamedBlobPB_descriptor,
        new java.lang.String[] { "Name", "Offset", "Length", "Crc32C", });
    internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_doris_snii_SniiLogicalIndexMetadataPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiLogicalIndexMetadataPB_descriptor,
        new java.lang.String[] { "IndexId", "IndexSuffix", "CoreMetadata", "SampledTermIndex", "DictBlockDirectory", "Kind", "Files", "DroppedPostings", });
    internal_static_doris_snii_SniiBlobRefPB_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_doris_snii_SniiBlobRefPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiBlobRefPB_descriptor,
        new java.lang.String[] { "Offset", "Length", });
    internal_static_doris_snii_SniiCoreMetadataPB_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_doris_snii_SniiCoreMetadataPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiCoreMetadataPB_descriptor,
        new java.lang.String[] { "IndexConfig", "Stats", "SectionRefs", "LegacyCommonGrams", "LegacyCommonGramsPostingPolicy", "GramScheme", "HighDfTerms", });
    internal_static_doris_snii_SniiHighDfTermsPB_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_doris_snii_SniiHighDfTermsPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiHighDfTermsPB_descriptor,
        new java.lang.String[] { "TermHash", "Df", "DfCeiling", });
    internal_static_doris_snii_SniiStatsPB_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_doris_snii_SniiStatsPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiStatsPB_descriptor,
        new java.lang.String[] { "DocCount", "IndexedDocCount", "TermCount", "NullCount", "SumTotalTermFreq", });
    internal_static_doris_snii_SniiRegionRefPB_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_doris_snii_SniiRegionRefPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiRegionRefPB_descriptor,
        new java.lang.String[] { "Offset", "Length", });
    internal_static_doris_snii_SniiSectionRefsPB_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_doris_snii_SniiSectionRefsPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiSectionRefsPB_descriptor,
        new java.lang.String[] { "DictRegion", "PostingRegion", "NullBitmap", "Bsbf", "Norms", });
    internal_static_doris_snii_SniiGramSchemePB_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_doris_snii_SniiGramSchemePB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_snii_SniiGramSchemePB_descriptor,
        new java.lang.String[] { "Mode", "MinLen", "MaxLen", "DensityPermille", "LowerCase", "HashVersion", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}