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

org.lumongo.cluster.message.Lumongo Maven / Gradle / Ivy

There is a newer version: 0.52
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: lumongo.proto

package org.lumongo.cluster.message;

public final class Lumongo {
  private Lumongo() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code LMAnalyzer}
   */
  public enum LMAnalyzer
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * KEYWORD = 1;
     */
    KEYWORD(0, 1),
    /**
     * LC_KEYWORD = 2;
     */
    LC_KEYWORD(1, 2),
    /**
     * WHITESPACE = 3;
     */
    WHITESPACE(2, 3),
    /**
     * LC_WHITESPACE = 4;
     */
    LC_WHITESPACE(3, 4),
    /**
     * STANDARD = 5;
     */
    STANDARD(4, 5),
    /**
     * NUMERIC_INT = 6;
     */
    NUMERIC_INT(5, 6),
    /**
     * NUMERIC_LONG = 7;
     */
    NUMERIC_LONG(6, 7),
    /**
     * NUMERIC_FLOAT = 8;
     */
    NUMERIC_FLOAT(7, 8),
    /**
     * NUMERIC_DOUBLE = 9;
     */
    NUMERIC_DOUBLE(8, 9),
    /**
     * STANDARD_FOLDING = 10;
     */
    STANDARD_FOLDING(9, 10),
    /**
     * STANDARD_NO_STOP = 11;
     */
    STANDARD_NO_STOP(10, 11),
    /**
     * STANDARD_FOLDING_NO_STOP = 12;
     */
    STANDARD_FOLDING_NO_STOP(11, 12),
    /**
     * DATE = 13;
     */
    DATE(12, 13),
    ;

    /**
     * KEYWORD = 1;
     */
    public static final int KEYWORD_VALUE = 1;
    /**
     * LC_KEYWORD = 2;
     */
    public static final int LC_KEYWORD_VALUE = 2;
    /**
     * WHITESPACE = 3;
     */
    public static final int WHITESPACE_VALUE = 3;
    /**
     * LC_WHITESPACE = 4;
     */
    public static final int LC_WHITESPACE_VALUE = 4;
    /**
     * STANDARD = 5;
     */
    public static final int STANDARD_VALUE = 5;
    /**
     * NUMERIC_INT = 6;
     */
    public static final int NUMERIC_INT_VALUE = 6;
    /**
     * NUMERIC_LONG = 7;
     */
    public static final int NUMERIC_LONG_VALUE = 7;
    /**
     * NUMERIC_FLOAT = 8;
     */
    public static final int NUMERIC_FLOAT_VALUE = 8;
    /**
     * NUMERIC_DOUBLE = 9;
     */
    public static final int NUMERIC_DOUBLE_VALUE = 9;
    /**
     * STANDARD_FOLDING = 10;
     */
    public static final int STANDARD_FOLDING_VALUE = 10;
    /**
     * STANDARD_NO_STOP = 11;
     */
    public static final int STANDARD_NO_STOP_VALUE = 11;
    /**
     * STANDARD_FOLDING_NO_STOP = 12;
     */
    public static final int STANDARD_FOLDING_NO_STOP_VALUE = 12;
    /**
     * DATE = 13;
     */
    public static final int DATE_VALUE = 13;


    public final int getNumber() { return value; }

    public static LMAnalyzer valueOf(int value) {
      switch (value) {
        case 1: return KEYWORD;
        case 2: return LC_KEYWORD;
        case 3: return WHITESPACE;
        case 4: return LC_WHITESPACE;
        case 5: return STANDARD;
        case 6: return NUMERIC_INT;
        case 7: return NUMERIC_LONG;
        case 8: return NUMERIC_FLOAT;
        case 9: return NUMERIC_DOUBLE;
        case 10: return STANDARD_FOLDING;
        case 11: return STANDARD_NO_STOP;
        case 12: return STANDARD_FOLDING_NO_STOP;
        case 13: return DATE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap() {
            public LMAnalyzer findValueByNumber(int number) {
              return LMAnalyzer.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int index;
    private final int value;

    private LMAnalyzer(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:LMAnalyzer)
  }

  /**
   * Protobuf enum {@code FetchType}
   */
  public enum FetchType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * FULL = 1;
     */
    FULL(0, 1),
    /**
     * META = 2;
     */
    META(1, 2),
    /**
     * NONE = 3;
     */
    NONE(2, 3),
    ;

    /**
     * FULL = 1;
     */
    public static final int FULL_VALUE = 1;
    /**
     * META = 2;
     */
    public static final int META_VALUE = 2;
    /**
     * NONE = 3;
     */
    public static final int NONE_VALUE = 3;


    public final int getNumber() { return value; }

    public static FetchType valueOf(int value) {
      switch (value) {
        case 1: return FULL;
        case 2: return META;
        case 3: return NONE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap() {
            public FetchType findValueByNumber(int number) {
              return FetchType.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int index;
    private final int value;

    private FetchType(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:FetchType)
  }

  public interface GetMembersRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetMembersRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code GetMembersRequest}
   */
  public static final class GetMembersRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetMembersRequest)
      GetMembersRequestOrBuilder {
    // Use GetMembersRequest.newBuilder() to construct.
    private GetMembersRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetMembersRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetMembersRequest defaultInstance;
    public static GetMembersRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetMembersRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetMembersRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetMembersRequest.class, org.lumongo.cluster.message.Lumongo.GetMembersRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetMembersRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetMembersRequest(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetMembersRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetMembersRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetMembersRequest)
        org.lumongo.cluster.message.Lumongo.GetMembersRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetMembersRequest.class, org.lumongo.cluster.message.Lumongo.GetMembersRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetMembersRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetMembersRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersRequest build() {
        org.lumongo.cluster.message.Lumongo.GetMembersRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetMembersRequest result = new org.lumongo.cluster.message.Lumongo.GetMembersRequest(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetMembersRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetMembersRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetMembersRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetMembersRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetMembersRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetMembersRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetMembersRequest)
    }

    static {
      defaultInstance = new GetMembersRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetMembersRequest)
  }

  public interface LMMemberOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LMMember)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string serverAddress = 1;
     */
    boolean hasServerAddress();
    /**
     * required string serverAddress = 1;
     */
    java.lang.String getServerAddress();
    /**
     * required string serverAddress = 1;
     */
    com.google.protobuf.ByteString
        getServerAddressBytes();

    /**
     * required uint32 externalPort = 2;
     */
    boolean hasExternalPort();
    /**
     * required uint32 externalPort = 2;
     */
    int getExternalPort();

    /**
     * optional uint32 internalPort = 3;
     */
    boolean hasInternalPort();
    /**
     * optional uint32 internalPort = 3;
     */
    int getInternalPort();

    /**
     * optional uint32 hazelcastPort = 4;
     */
    boolean hasHazelcastPort();
    /**
     * optional uint32 hazelcastPort = 4;
     */
    int getHazelcastPort();

    /**
     * optional uint32 restPort = 5;
     */
    boolean hasRestPort();
    /**
     * optional uint32 restPort = 5;
     */
    int getRestPort();
  }
  /**
   * Protobuf type {@code LMMember}
   */
  public static final class LMMember extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LMMember)
      LMMemberOrBuilder {
    // Use LMMember.newBuilder() to construct.
    private LMMember(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LMMember(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LMMember defaultInstance;
    public static LMMember getDefaultInstance() {
      return defaultInstance;
    }

    public LMMember getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LMMember(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              serverAddress_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              externalPort_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              internalPort_ = input.readUInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              hazelcastPort_ = input.readUInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              restPort_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMMember_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMMember_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LMMember.class, org.lumongo.cluster.message.Lumongo.LMMember.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LMMember parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LMMember(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SERVERADDRESS_FIELD_NUMBER = 1;
    private java.lang.Object serverAddress_;
    /**
     * required string serverAddress = 1;
     */
    public boolean hasServerAddress() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string serverAddress = 1;
     */
    public java.lang.String getServerAddress() {
      java.lang.Object ref = serverAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          serverAddress_ = s;
        }
        return s;
      }
    }
    /**
     * required string serverAddress = 1;
     */
    public com.google.protobuf.ByteString
        getServerAddressBytes() {
      java.lang.Object ref = serverAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serverAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTERNALPORT_FIELD_NUMBER = 2;
    private int externalPort_;
    /**
     * required uint32 externalPort = 2;
     */
    public boolean hasExternalPort() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint32 externalPort = 2;
     */
    public int getExternalPort() {
      return externalPort_;
    }

    public static final int INTERNALPORT_FIELD_NUMBER = 3;
    private int internalPort_;
    /**
     * optional uint32 internalPort = 3;
     */
    public boolean hasInternalPort() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint32 internalPort = 3;
     */
    public int getInternalPort() {
      return internalPort_;
    }

    public static final int HAZELCASTPORT_FIELD_NUMBER = 4;
    private int hazelcastPort_;
    /**
     * optional uint32 hazelcastPort = 4;
     */
    public boolean hasHazelcastPort() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 hazelcastPort = 4;
     */
    public int getHazelcastPort() {
      return hazelcastPort_;
    }

    public static final int RESTPORT_FIELD_NUMBER = 5;
    private int restPort_;
    /**
     * optional uint32 restPort = 5;
     */
    public boolean hasRestPort() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 restPort = 5;
     */
    public int getRestPort() {
      return restPort_;
    }

    private void initFields() {
      serverAddress_ = "";
      externalPort_ = 0;
      internalPort_ = 0;
      hazelcastPort_ = 0;
      restPort_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasServerAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExternalPort()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getServerAddressBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, externalPort_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, internalPort_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(4, hazelcastPort_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, restPort_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getServerAddressBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, externalPort_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, internalPort_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, hazelcastPort_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, restPort_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMMember parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LMMember prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LMMember}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LMMember)
        org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMMember_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMMember_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LMMember.class, org.lumongo.cluster.message.Lumongo.LMMember.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LMMember.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        serverAddress_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        externalPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        internalPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        hazelcastPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        restPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMMember_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LMMember getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LMMember build() {
        org.lumongo.cluster.message.Lumongo.LMMember result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LMMember buildPartial() {
        org.lumongo.cluster.message.Lumongo.LMMember result = new org.lumongo.cluster.message.Lumongo.LMMember(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.serverAddress_ = serverAddress_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.externalPort_ = externalPort_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.internalPort_ = internalPort_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.hazelcastPort_ = hazelcastPort_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.restPort_ = restPort_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LMMember) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LMMember)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LMMember other) {
        if (other == org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance()) return this;
        if (other.hasServerAddress()) {
          bitField0_ |= 0x00000001;
          serverAddress_ = other.serverAddress_;
          onChanged();
        }
        if (other.hasExternalPort()) {
          setExternalPort(other.getExternalPort());
        }
        if (other.hasInternalPort()) {
          setInternalPort(other.getInternalPort());
        }
        if (other.hasHazelcastPort()) {
          setHazelcastPort(other.getHazelcastPort());
        }
        if (other.hasRestPort()) {
          setRestPort(other.getRestPort());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasServerAddress()) {
          
          return false;
        }
        if (!hasExternalPort()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LMMember parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LMMember) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object serverAddress_ = "";
      /**
       * required string serverAddress = 1;
       */
      public boolean hasServerAddress() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string serverAddress = 1;
       */
      public java.lang.String getServerAddress() {
        java.lang.Object ref = serverAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            serverAddress_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string serverAddress = 1;
       */
      public com.google.protobuf.ByteString
          getServerAddressBytes() {
        java.lang.Object ref = serverAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serverAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string serverAddress = 1;
       */
      public Builder setServerAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        serverAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * required string serverAddress = 1;
       */
      public Builder clearServerAddress() {
        bitField0_ = (bitField0_ & ~0x00000001);
        serverAddress_ = getDefaultInstance().getServerAddress();
        onChanged();
        return this;
      }
      /**
       * required string serverAddress = 1;
       */
      public Builder setServerAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        serverAddress_ = value;
        onChanged();
        return this;
      }

      private int externalPort_ ;
      /**
       * required uint32 externalPort = 2;
       */
      public boolean hasExternalPort() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required uint32 externalPort = 2;
       */
      public int getExternalPort() {
        return externalPort_;
      }
      /**
       * required uint32 externalPort = 2;
       */
      public Builder setExternalPort(int value) {
        bitField0_ |= 0x00000002;
        externalPort_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 externalPort = 2;
       */
      public Builder clearExternalPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        externalPort_ = 0;
        onChanged();
        return this;
      }

      private int internalPort_ ;
      /**
       * optional uint32 internalPort = 3;
       */
      public boolean hasInternalPort() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 internalPort = 3;
       */
      public int getInternalPort() {
        return internalPort_;
      }
      /**
       * optional uint32 internalPort = 3;
       */
      public Builder setInternalPort(int value) {
        bitField0_ |= 0x00000004;
        internalPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 internalPort = 3;
       */
      public Builder clearInternalPort() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalPort_ = 0;
        onChanged();
        return this;
      }

      private int hazelcastPort_ ;
      /**
       * optional uint32 hazelcastPort = 4;
       */
      public boolean hasHazelcastPort() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 hazelcastPort = 4;
       */
      public int getHazelcastPort() {
        return hazelcastPort_;
      }
      /**
       * optional uint32 hazelcastPort = 4;
       */
      public Builder setHazelcastPort(int value) {
        bitField0_ |= 0x00000008;
        hazelcastPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 hazelcastPort = 4;
       */
      public Builder clearHazelcastPort() {
        bitField0_ = (bitField0_ & ~0x00000008);
        hazelcastPort_ = 0;
        onChanged();
        return this;
      }

      private int restPort_ ;
      /**
       * optional uint32 restPort = 5;
       */
      public boolean hasRestPort() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 restPort = 5;
       */
      public int getRestPort() {
        return restPort_;
      }
      /**
       * optional uint32 restPort = 5;
       */
      public Builder setRestPort(int value) {
        bitField0_ |= 0x00000010;
        restPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 restPort = 5;
       */
      public Builder clearRestPort() {
        bitField0_ = (bitField0_ & ~0x00000010);
        restPort_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:LMMember)
    }

    static {
      defaultInstance = new LMMember(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LMMember)
  }

  public interface GetMembersResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetMembersResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .LMMember member = 1;
     */
    java.util.List 
        getMemberList();
    /**
     * repeated .LMMember member = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMMember getMember(int index);
    /**
     * repeated .LMMember member = 1;
     */
    int getMemberCount();
    /**
     * repeated .LMMember member = 1;
     */
    java.util.List 
        getMemberOrBuilderList();
    /**
     * repeated .LMMember member = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder(
        int index);

    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    java.util.List 
        getIndexMappingList();
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    org.lumongo.cluster.message.Lumongo.IndexMapping getIndexMapping(int index);
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    int getIndexMappingCount();
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    java.util.List 
        getIndexMappingOrBuilderList();
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder getIndexMappingOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetMembersResponse}
   */
  public static final class GetMembersResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetMembersResponse)
      GetMembersResponseOrBuilder {
    // Use GetMembersResponse.newBuilder() to construct.
    private GetMembersResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetMembersResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetMembersResponse defaultInstance;
    public static GetMembersResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GetMembersResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetMembersResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                member_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              member_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.LMMember.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                indexMapping_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              indexMapping_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.IndexMapping.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = java.util.Collections.unmodifiableList(member_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          indexMapping_ = java.util.Collections.unmodifiableList(indexMapping_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetMembersResponse.class, org.lumongo.cluster.message.Lumongo.GetMembersResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetMembersResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetMembersResponse(input, extensionRegistry);
      }
    };

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

    public static final int MEMBER_FIELD_NUMBER = 1;
    private java.util.List member_;
    /**
     * repeated .LMMember member = 1;
     */
    public java.util.List getMemberList() {
      return member_;
    }
    /**
     * repeated .LMMember member = 1;
     */
    public java.util.List 
        getMemberOrBuilderList() {
      return member_;
    }
    /**
     * repeated .LMMember member = 1;
     */
    public int getMemberCount() {
      return member_.size();
    }
    /**
     * repeated .LMMember member = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMMember getMember(int index) {
      return member_.get(index);
    }
    /**
     * repeated .LMMember member = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder(
        int index) {
      return member_.get(index);
    }

    public static final int INDEXMAPPING_FIELD_NUMBER = 2;
    private java.util.List indexMapping_;
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    public java.util.List getIndexMappingList() {
      return indexMapping_;
    }
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    public java.util.List 
        getIndexMappingOrBuilderList() {
      return indexMapping_;
    }
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    public int getIndexMappingCount() {
      return indexMapping_.size();
    }
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    public org.lumongo.cluster.message.Lumongo.IndexMapping getIndexMapping(int index) {
      return indexMapping_.get(index);
    }
    /**
     * repeated .IndexMapping indexMapping = 2;
     */
    public org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder getIndexMappingOrBuilder(
        int index) {
      return indexMapping_.get(index);
    }

    private void initFields() {
      member_ = java.util.Collections.emptyList();
      indexMapping_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getMemberCount(); i++) {
        if (!getMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getIndexMappingCount(); i++) {
        if (!getIndexMapping(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < member_.size(); i++) {
        output.writeMessage(1, member_.get(i));
      }
      for (int i = 0; i < indexMapping_.size(); i++) {
        output.writeMessage(2, indexMapping_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < member_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, member_.get(i));
      }
      for (int i = 0; i < indexMapping_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, indexMapping_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetMembersResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetMembersResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetMembersResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetMembersResponse)
        org.lumongo.cluster.message.Lumongo.GetMembersResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetMembersResponse.class, org.lumongo.cluster.message.Lumongo.GetMembersResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetMembersResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemberFieldBuilder();
          getIndexMappingFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (memberBuilder_ == null) {
          member_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          memberBuilder_.clear();
        }
        if (indexMappingBuilder_ == null) {
          indexMapping_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          indexMappingBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetMembersResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersResponse build() {
        org.lumongo.cluster.message.Lumongo.GetMembersResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetMembersResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetMembersResponse result = new org.lumongo.cluster.message.Lumongo.GetMembersResponse(this);
        int from_bitField0_ = bitField0_;
        if (memberBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            member_ = java.util.Collections.unmodifiableList(member_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.member_ = member_;
        } else {
          result.member_ = memberBuilder_.build();
        }
        if (indexMappingBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            indexMapping_ = java.util.Collections.unmodifiableList(indexMapping_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.indexMapping_ = indexMapping_;
        } else {
          result.indexMapping_ = indexMappingBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetMembersResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetMembersResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetMembersResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance()) return this;
        if (memberBuilder_ == null) {
          if (!other.member_.isEmpty()) {
            if (member_.isEmpty()) {
              member_ = other.member_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMemberIsMutable();
              member_.addAll(other.member_);
            }
            onChanged();
          }
        } else {
          if (!other.member_.isEmpty()) {
            if (memberBuilder_.isEmpty()) {
              memberBuilder_.dispose();
              memberBuilder_ = null;
              member_ = other.member_;
              bitField0_ = (bitField0_ & ~0x00000001);
              memberBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMemberFieldBuilder() : null;
            } else {
              memberBuilder_.addAllMessages(other.member_);
            }
          }
        }
        if (indexMappingBuilder_ == null) {
          if (!other.indexMapping_.isEmpty()) {
            if (indexMapping_.isEmpty()) {
              indexMapping_ = other.indexMapping_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureIndexMappingIsMutable();
              indexMapping_.addAll(other.indexMapping_);
            }
            onChanged();
          }
        } else {
          if (!other.indexMapping_.isEmpty()) {
            if (indexMappingBuilder_.isEmpty()) {
              indexMappingBuilder_.dispose();
              indexMappingBuilder_ = null;
              indexMapping_ = other.indexMapping_;
              bitField0_ = (bitField0_ & ~0x00000002);
              indexMappingBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIndexMappingFieldBuilder() : null;
            } else {
              indexMappingBuilder_.addAllMessages(other.indexMapping_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getMemberCount(); i++) {
          if (!getMember(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getIndexMappingCount(); i++) {
          if (!getIndexMapping(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetMembersResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetMembersResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List member_ =
        java.util.Collections.emptyList();
      private void ensureMemberIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = new java.util.ArrayList(member_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder> memberBuilder_;

      /**
       * repeated .LMMember member = 1;
       */
      public java.util.List getMemberList() {
        if (memberBuilder_ == null) {
          return java.util.Collections.unmodifiableList(member_);
        } else {
          return memberBuilder_.getMessageList();
        }
      }
      /**
       * repeated .LMMember member = 1;
       */
      public int getMemberCount() {
        if (memberBuilder_ == null) {
          return member_.size();
        } else {
          return memberBuilder_.getCount();
        }
      }
      /**
       * repeated .LMMember member = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember getMember(int index) {
        if (memberBuilder_ == null) {
          return member_.get(index);
        } else {
          return memberBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder setMember(
          int index, org.lumongo.cluster.message.Lumongo.LMMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.set(index, value);
          onChanged();
        } else {
          memberBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder setMember(
          int index, org.lumongo.cluster.message.Lumongo.LMMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.set(index, builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder addMember(org.lumongo.cluster.message.Lumongo.LMMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.add(value);
          onChanged();
        } else {
          memberBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder addMember(
          int index, org.lumongo.cluster.message.Lumongo.LMMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMemberIsMutable();
          member_.add(index, value);
          onChanged();
        } else {
          memberBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder addMember(
          org.lumongo.cluster.message.Lumongo.LMMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.add(builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder addMember(
          int index, org.lumongo.cluster.message.Lumongo.LMMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.add(index, builderForValue.build());
          onChanged();
        } else {
          memberBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder addAllMember(
          java.lang.Iterable values) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, member_);
          onChanged();
        } else {
          memberBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder clearMember() {
        if (memberBuilder_ == null) {
          member_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          memberBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public Builder removeMember(int index) {
        if (memberBuilder_ == null) {
          ensureMemberIsMutable();
          member_.remove(index);
          onChanged();
        } else {
          memberBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .LMMember member = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember.Builder getMemberBuilder(
          int index) {
        return getMemberFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .LMMember member = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder(
          int index) {
        if (memberBuilder_ == null) {
          return member_.get(index);  } else {
          return memberBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .LMMember member = 1;
       */
      public java.util.List 
           getMemberOrBuilderList() {
        if (memberBuilder_ != null) {
          return memberBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(member_);
        }
      }
      /**
       * repeated .LMMember member = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember.Builder addMemberBuilder() {
        return getMemberFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance());
      }
      /**
       * repeated .LMMember member = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember.Builder addMemberBuilder(
          int index) {
        return getMemberFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance());
      }
      /**
       * repeated .LMMember member = 1;
       */
      public java.util.List 
           getMemberBuilderList() {
        return getMemberFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder> 
          getMemberFieldBuilder() {
        if (memberBuilder_ == null) {
          memberBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder>(
                  member_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          member_ = null;
        }
        return memberBuilder_;
      }

      private java.util.List indexMapping_ =
        java.util.Collections.emptyList();
      private void ensureIndexMappingIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          indexMapping_ = new java.util.ArrayList(indexMapping_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexMapping, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder, org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder> indexMappingBuilder_;

      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public java.util.List getIndexMappingList() {
        if (indexMappingBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexMapping_);
        } else {
          return indexMappingBuilder_.getMessageList();
        }
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public int getIndexMappingCount() {
        if (indexMappingBuilder_ == null) {
          return indexMapping_.size();
        } else {
          return indexMappingBuilder_.getCount();
        }
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexMapping getIndexMapping(int index) {
        if (indexMappingBuilder_ == null) {
          return indexMapping_.get(index);
        } else {
          return indexMappingBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder setIndexMapping(
          int index, org.lumongo.cluster.message.Lumongo.IndexMapping value) {
        if (indexMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexMappingIsMutable();
          indexMapping_.set(index, value);
          onChanged();
        } else {
          indexMappingBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder setIndexMapping(
          int index, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder builderForValue) {
        if (indexMappingBuilder_ == null) {
          ensureIndexMappingIsMutable();
          indexMapping_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexMappingBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder addIndexMapping(org.lumongo.cluster.message.Lumongo.IndexMapping value) {
        if (indexMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexMappingIsMutable();
          indexMapping_.add(value);
          onChanged();
        } else {
          indexMappingBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder addIndexMapping(
          int index, org.lumongo.cluster.message.Lumongo.IndexMapping value) {
        if (indexMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexMappingIsMutable();
          indexMapping_.add(index, value);
          onChanged();
        } else {
          indexMappingBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder addIndexMapping(
          org.lumongo.cluster.message.Lumongo.IndexMapping.Builder builderForValue) {
        if (indexMappingBuilder_ == null) {
          ensureIndexMappingIsMutable();
          indexMapping_.add(builderForValue.build());
          onChanged();
        } else {
          indexMappingBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder addIndexMapping(
          int index, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder builderForValue) {
        if (indexMappingBuilder_ == null) {
          ensureIndexMappingIsMutable();
          indexMapping_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexMappingBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder addAllIndexMapping(
          java.lang.Iterable values) {
        if (indexMappingBuilder_ == null) {
          ensureIndexMappingIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexMapping_);
          onChanged();
        } else {
          indexMappingBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder clearIndexMapping() {
        if (indexMappingBuilder_ == null) {
          indexMapping_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          indexMappingBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public Builder removeIndexMapping(int index) {
        if (indexMappingBuilder_ == null) {
          ensureIndexMappingIsMutable();
          indexMapping_.remove(index);
          onChanged();
        } else {
          indexMappingBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexMapping.Builder getIndexMappingBuilder(
          int index) {
        return getIndexMappingFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder getIndexMappingOrBuilder(
          int index) {
        if (indexMappingBuilder_ == null) {
          return indexMapping_.get(index);  } else {
          return indexMappingBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public java.util.List 
           getIndexMappingOrBuilderList() {
        if (indexMappingBuilder_ != null) {
          return indexMappingBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexMapping_);
        }
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexMapping.Builder addIndexMappingBuilder() {
        return getIndexMappingFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.IndexMapping.getDefaultInstance());
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexMapping.Builder addIndexMappingBuilder(
          int index) {
        return getIndexMappingFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.IndexMapping.getDefaultInstance());
      }
      /**
       * repeated .IndexMapping indexMapping = 2;
       */
      public java.util.List 
           getIndexMappingBuilderList() {
        return getIndexMappingFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexMapping, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder, org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder> 
          getIndexMappingFieldBuilder() {
        if (indexMappingBuilder_ == null) {
          indexMappingBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.IndexMapping, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder, org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder>(
                  indexMapping_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          indexMapping_ = null;
        }
        return indexMappingBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetMembersResponse)
    }

    static {
      defaultInstance = new GetMembersResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetMembersResponse)
  }

  public interface IndexMappingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexMapping)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required uint32 numberOfSegments = 2;
     */
    boolean hasNumberOfSegments();
    /**
     * required uint32 numberOfSegments = 2;
     */
    int getNumberOfSegments();

    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    java.util.List 
        getSegmentMappingList();
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    org.lumongo.cluster.message.Lumongo.SegmentMapping getSegmentMapping(int index);
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    int getSegmentMappingCount();
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    java.util.List 
        getSegmentMappingOrBuilderList();
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder getSegmentMappingOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code IndexMapping}
   */
  public static final class IndexMapping extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexMapping)
      IndexMappingOrBuilder {
    // Use IndexMapping.newBuilder() to construct.
    private IndexMapping(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexMapping defaultInstance;
    public static IndexMapping getDefaultInstance() {
      return defaultInstance;
    }

    public IndexMapping getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexMapping(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              numberOfSegments_ = input.readUInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                segmentMapping_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              segmentMapping_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.SegmentMapping.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          segmentMapping_ = java.util.Collections.unmodifiableList(segmentMapping_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexMapping_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexMapping_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexMapping.class, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexMapping parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexMapping(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMBEROFSEGMENTS_FIELD_NUMBER = 2;
    private int numberOfSegments_;
    /**
     * required uint32 numberOfSegments = 2;
     */
    public boolean hasNumberOfSegments() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint32 numberOfSegments = 2;
     */
    public int getNumberOfSegments() {
      return numberOfSegments_;
    }

    public static final int SEGMENTMAPPING_FIELD_NUMBER = 3;
    private java.util.List segmentMapping_;
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    public java.util.List getSegmentMappingList() {
      return segmentMapping_;
    }
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    public java.util.List 
        getSegmentMappingOrBuilderList() {
      return segmentMapping_;
    }
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    public int getSegmentMappingCount() {
      return segmentMapping_.size();
    }
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentMapping getSegmentMapping(int index) {
      return segmentMapping_.get(index);
    }
    /**
     * repeated .SegmentMapping segmentMapping = 3;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder getSegmentMappingOrBuilder(
        int index) {
      return segmentMapping_.get(index);
    }

    private void initFields() {
      indexName_ = "";
      numberOfSegments_ = 0;
      segmentMapping_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumberOfSegments()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSegmentMappingCount(); i++) {
        if (!getSegmentMapping(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, numberOfSegments_);
      }
      for (int i = 0; i < segmentMapping_.size(); i++) {
        output.writeMessage(3, segmentMapping_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, numberOfSegments_);
      }
      for (int i = 0; i < segmentMapping_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, segmentMapping_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexMapping parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexMapping prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexMapping}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexMapping)
        org.lumongo.cluster.message.Lumongo.IndexMappingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexMapping_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexMapping_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexMapping.class, org.lumongo.cluster.message.Lumongo.IndexMapping.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexMapping.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSegmentMappingFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        numberOfSegments_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (segmentMappingBuilder_ == null) {
          segmentMapping_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          segmentMappingBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexMapping_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexMapping getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexMapping.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexMapping build() {
        org.lumongo.cluster.message.Lumongo.IndexMapping result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexMapping buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexMapping result = new org.lumongo.cluster.message.Lumongo.IndexMapping(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.numberOfSegments_ = numberOfSegments_;
        if (segmentMappingBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            segmentMapping_ = java.util.Collections.unmodifiableList(segmentMapping_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.segmentMapping_ = segmentMapping_;
        } else {
          result.segmentMapping_ = segmentMappingBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexMapping) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexMapping)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexMapping other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexMapping.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasNumberOfSegments()) {
          setNumberOfSegments(other.getNumberOfSegments());
        }
        if (segmentMappingBuilder_ == null) {
          if (!other.segmentMapping_.isEmpty()) {
            if (segmentMapping_.isEmpty()) {
              segmentMapping_ = other.segmentMapping_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSegmentMappingIsMutable();
              segmentMapping_.addAll(other.segmentMapping_);
            }
            onChanged();
          }
        } else {
          if (!other.segmentMapping_.isEmpty()) {
            if (segmentMappingBuilder_.isEmpty()) {
              segmentMappingBuilder_.dispose();
              segmentMappingBuilder_ = null;
              segmentMapping_ = other.segmentMapping_;
              bitField0_ = (bitField0_ & ~0x00000004);
              segmentMappingBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSegmentMappingFieldBuilder() : null;
            } else {
              segmentMappingBuilder_.addAllMessages(other.segmentMapping_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasNumberOfSegments()) {
          
          return false;
        }
        for (int i = 0; i < getSegmentMappingCount(); i++) {
          if (!getSegmentMapping(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexMapping parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexMapping) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private int numberOfSegments_ ;
      /**
       * required uint32 numberOfSegments = 2;
       */
      public boolean hasNumberOfSegments() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required uint32 numberOfSegments = 2;
       */
      public int getNumberOfSegments() {
        return numberOfSegments_;
      }
      /**
       * required uint32 numberOfSegments = 2;
       */
      public Builder setNumberOfSegments(int value) {
        bitField0_ |= 0x00000002;
        numberOfSegments_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 numberOfSegments = 2;
       */
      public Builder clearNumberOfSegments() {
        bitField0_ = (bitField0_ & ~0x00000002);
        numberOfSegments_ = 0;
        onChanged();
        return this;
      }

      private java.util.List segmentMapping_ =
        java.util.Collections.emptyList();
      private void ensureSegmentMappingIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          segmentMapping_ = new java.util.ArrayList(segmentMapping_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentMapping, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder, org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder> segmentMappingBuilder_;

      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public java.util.List getSegmentMappingList() {
        if (segmentMappingBuilder_ == null) {
          return java.util.Collections.unmodifiableList(segmentMapping_);
        } else {
          return segmentMappingBuilder_.getMessageList();
        }
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public int getSegmentMappingCount() {
        if (segmentMappingBuilder_ == null) {
          return segmentMapping_.size();
        } else {
          return segmentMappingBuilder_.getCount();
        }
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentMapping getSegmentMapping(int index) {
        if (segmentMappingBuilder_ == null) {
          return segmentMapping_.get(index);
        } else {
          return segmentMappingBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder setSegmentMapping(
          int index, org.lumongo.cluster.message.Lumongo.SegmentMapping value) {
        if (segmentMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentMappingIsMutable();
          segmentMapping_.set(index, value);
          onChanged();
        } else {
          segmentMappingBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder setSegmentMapping(
          int index, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder builderForValue) {
        if (segmentMappingBuilder_ == null) {
          ensureSegmentMappingIsMutable();
          segmentMapping_.set(index, builderForValue.build());
          onChanged();
        } else {
          segmentMappingBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder addSegmentMapping(org.lumongo.cluster.message.Lumongo.SegmentMapping value) {
        if (segmentMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentMappingIsMutable();
          segmentMapping_.add(value);
          onChanged();
        } else {
          segmentMappingBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder addSegmentMapping(
          int index, org.lumongo.cluster.message.Lumongo.SegmentMapping value) {
        if (segmentMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentMappingIsMutable();
          segmentMapping_.add(index, value);
          onChanged();
        } else {
          segmentMappingBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder addSegmentMapping(
          org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder builderForValue) {
        if (segmentMappingBuilder_ == null) {
          ensureSegmentMappingIsMutable();
          segmentMapping_.add(builderForValue.build());
          onChanged();
        } else {
          segmentMappingBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder addSegmentMapping(
          int index, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder builderForValue) {
        if (segmentMappingBuilder_ == null) {
          ensureSegmentMappingIsMutable();
          segmentMapping_.add(index, builderForValue.build());
          onChanged();
        } else {
          segmentMappingBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder addAllSegmentMapping(
          java.lang.Iterable values) {
        if (segmentMappingBuilder_ == null) {
          ensureSegmentMappingIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, segmentMapping_);
          onChanged();
        } else {
          segmentMappingBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder clearSegmentMapping() {
        if (segmentMappingBuilder_ == null) {
          segmentMapping_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          segmentMappingBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public Builder removeSegmentMapping(int index) {
        if (segmentMappingBuilder_ == null) {
          ensureSegmentMappingIsMutable();
          segmentMapping_.remove(index);
          onChanged();
        } else {
          segmentMappingBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder getSegmentMappingBuilder(
          int index) {
        return getSegmentMappingFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder getSegmentMappingOrBuilder(
          int index) {
        if (segmentMappingBuilder_ == null) {
          return segmentMapping_.get(index);  } else {
          return segmentMappingBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public java.util.List 
           getSegmentMappingOrBuilderList() {
        if (segmentMappingBuilder_ != null) {
          return segmentMappingBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(segmentMapping_);
        }
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder addSegmentMappingBuilder() {
        return getSegmentMappingFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.SegmentMapping.getDefaultInstance());
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder addSegmentMappingBuilder(
          int index) {
        return getSegmentMappingFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.SegmentMapping.getDefaultInstance());
      }
      /**
       * repeated .SegmentMapping segmentMapping = 3;
       */
      public java.util.List 
           getSegmentMappingBuilderList() {
        return getSegmentMappingFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentMapping, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder, org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder> 
          getSegmentMappingFieldBuilder() {
        if (segmentMappingBuilder_ == null) {
          segmentMappingBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.SegmentMapping, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder, org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder>(
                  segmentMapping_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          segmentMapping_ = null;
        }
        return segmentMappingBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:IndexMapping)
    }

    static {
      defaultInstance = new IndexMapping(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexMapping)
  }

  public interface SegmentMappingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SegmentMapping)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required uint32 segmentNumber = 1;
     */
    boolean hasSegmentNumber();
    /**
     * required uint32 segmentNumber = 1;
     */
    int getSegmentNumber();

    /**
     * required .LMMember member = 2;
     */
    boolean hasMember();
    /**
     * required .LMMember member = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMMember getMember();
    /**
     * required .LMMember member = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder();
  }
  /**
   * Protobuf type {@code SegmentMapping}
   */
  public static final class SegmentMapping extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:SegmentMapping)
      SegmentMappingOrBuilder {
    // Use SegmentMapping.newBuilder() to construct.
    private SegmentMapping(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SegmentMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SegmentMapping defaultInstance;
    public static SegmentMapping getDefaultInstance() {
      return defaultInstance;
    }

    public SegmentMapping getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SegmentMapping(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              segmentNumber_ = input.readUInt32();
              break;
            }
            case 18: {
              org.lumongo.cluster.message.Lumongo.LMMember.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = member_.toBuilder();
              }
              member_ = input.readMessage(org.lumongo.cluster.message.Lumongo.LMMember.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(member_);
                member_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentMapping_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentMapping_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.SegmentMapping.class, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public SegmentMapping parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SegmentMapping(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SEGMENTNUMBER_FIELD_NUMBER = 1;
    private int segmentNumber_;
    /**
     * required uint32 segmentNumber = 1;
     */
    public boolean hasSegmentNumber() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required uint32 segmentNumber = 1;
     */
    public int getSegmentNumber() {
      return segmentNumber_;
    }

    public static final int MEMBER_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.LMMember member_;
    /**
     * required .LMMember member = 2;
     */
    public boolean hasMember() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .LMMember member = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMMember getMember() {
      return member_;
    }
    /**
     * required .LMMember member = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder() {
      return member_;
    }

    private void initFields() {
      segmentNumber_ = 0;
      member_ = org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSegmentNumber()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMember()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMember().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, member_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, member_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentMapping parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.SegmentMapping prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SegmentMapping}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:SegmentMapping)
        org.lumongo.cluster.message.Lumongo.SegmentMappingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentMapping_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentMapping_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.SegmentMapping.class, org.lumongo.cluster.message.Lumongo.SegmentMapping.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.SegmentMapping.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemberFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        segmentNumber_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (memberBuilder_ == null) {
          member_ = org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance();
        } else {
          memberBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentMapping_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentMapping getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.SegmentMapping.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.SegmentMapping build() {
        org.lumongo.cluster.message.Lumongo.SegmentMapping result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentMapping buildPartial() {
        org.lumongo.cluster.message.Lumongo.SegmentMapping result = new org.lumongo.cluster.message.Lumongo.SegmentMapping(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.segmentNumber_ = segmentNumber_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (memberBuilder_ == null) {
          result.member_ = member_;
        } else {
          result.member_ = memberBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.SegmentMapping) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.SegmentMapping)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.SegmentMapping other) {
        if (other == org.lumongo.cluster.message.Lumongo.SegmentMapping.getDefaultInstance()) return this;
        if (other.hasSegmentNumber()) {
          setSegmentNumber(other.getSegmentNumber());
        }
        if (other.hasMember()) {
          mergeMember(other.getMember());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSegmentNumber()) {
          
          return false;
        }
        if (!hasMember()) {
          
          return false;
        }
        if (!getMember().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.SegmentMapping parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.SegmentMapping) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int segmentNumber_ ;
      /**
       * required uint32 segmentNumber = 1;
       */
      public boolean hasSegmentNumber() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public int getSegmentNumber() {
        return segmentNumber_;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder setSegmentNumber(int value) {
        bitField0_ |= 0x00000001;
        segmentNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder clearSegmentNumber() {
        bitField0_ = (bitField0_ & ~0x00000001);
        segmentNumber_ = 0;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.LMMember member_ = org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder> memberBuilder_;
      /**
       * required .LMMember member = 2;
       */
      public boolean hasMember() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required .LMMember member = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember getMember() {
        if (memberBuilder_ == null) {
          return member_;
        } else {
          return memberBuilder_.getMessage();
        }
      }
      /**
       * required .LMMember member = 2;
       */
      public Builder setMember(org.lumongo.cluster.message.Lumongo.LMMember value) {
        if (memberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          member_ = value;
          onChanged();
        } else {
          memberBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .LMMember member = 2;
       */
      public Builder setMember(
          org.lumongo.cluster.message.Lumongo.LMMember.Builder builderForValue) {
        if (memberBuilder_ == null) {
          member_ = builderForValue.build();
          onChanged();
        } else {
          memberBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .LMMember member = 2;
       */
      public Builder mergeMember(org.lumongo.cluster.message.Lumongo.LMMember value) {
        if (memberBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              member_ != org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance()) {
            member_ =
              org.lumongo.cluster.message.Lumongo.LMMember.newBuilder(member_).mergeFrom(value).buildPartial();
          } else {
            member_ = value;
          }
          onChanged();
        } else {
          memberBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .LMMember member = 2;
       */
      public Builder clearMember() {
        if (memberBuilder_ == null) {
          member_ = org.lumongo.cluster.message.Lumongo.LMMember.getDefaultInstance();
          onChanged();
        } else {
          memberBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * required .LMMember member = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMMember.Builder getMemberBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getMemberFieldBuilder().getBuilder();
      }
      /**
       * required .LMMember member = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder getMemberOrBuilder() {
        if (memberBuilder_ != null) {
          return memberBuilder_.getMessageOrBuilder();
        } else {
          return member_;
        }
      }
      /**
       * required .LMMember member = 2;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder> 
          getMemberFieldBuilder() {
        if (memberBuilder_ == null) {
          memberBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMMember, org.lumongo.cluster.message.Lumongo.LMMember.Builder, org.lumongo.cluster.message.Lumongo.LMMemberOrBuilder>(
                  getMember(),
                  getParentForChildren(),
                  isClean());
          member_ = null;
        }
        return memberBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:SegmentMapping)
    }

    static {
      defaultInstance = new SegmentMapping(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SegmentMapping)
  }

  public interface GetTermsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetTermsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required string fieldName = 2;
     */
    boolean hasFieldName();
    /**
     * required string fieldName = 2;
     */
    java.lang.String getFieldName();
    /**
     * required string fieldName = 2;
     */
    com.google.protobuf.ByteString
        getFieldNameBytes();

    /**
     * required uint32 amount = 3;
     */
    boolean hasAmount();
    /**
     * required uint32 amount = 3;
     */
    int getAmount();

    /**
     * optional string startingTerm = 4;
     */
    boolean hasStartingTerm();
    /**
     * optional string startingTerm = 4;
     */
    java.lang.String getStartingTerm();
    /**
     * optional string startingTerm = 4;
     */
    com.google.protobuf.ByteString
        getStartingTermBytes();

    /**
     * optional uint32 minDocFreq = 5 [default = 1];
     */
    boolean hasMinDocFreq();
    /**
     * optional uint32 minDocFreq = 5 [default = 1];
     */
    int getMinDocFreq();

    /**
     * optional bool realTime = 6 [default = true];
     */
    boolean hasRealTime();
    /**
     * optional bool realTime = 6 [default = true];
     */
    boolean getRealTime();

    /**
     * optional string termFilter = 7;
     */
    boolean hasTermFilter();
    /**
     * optional string termFilter = 7;
     */
    java.lang.String getTermFilter();
    /**
     * optional string termFilter = 7;
     */
    com.google.protobuf.ByteString
        getTermFilterBytes();

    /**
     * optional string termMatch = 8;
     */
    boolean hasTermMatch();
    /**
     * optional string termMatch = 8;
     */
    java.lang.String getTermMatch();
    /**
     * optional string termMatch = 8;
     */
    com.google.protobuf.ByteString
        getTermMatchBytes();
  }
  /**
   * Protobuf type {@code GetTermsRequest}
   */
  public static final class GetTermsRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetTermsRequest)
      GetTermsRequestOrBuilder {
    // Use GetTermsRequest.newBuilder() to construct.
    private GetTermsRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetTermsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetTermsRequest defaultInstance;
    public static GetTermsRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetTermsRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetTermsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              fieldName_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              amount_ = input.readUInt32();
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              startingTerm_ = bs;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              minDocFreq_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              realTime_ = input.readBool();
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              termFilter_ = bs;
              break;
            }
            case 66: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000080;
              termMatch_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetTermsRequest.class, org.lumongo.cluster.message.Lumongo.GetTermsRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetTermsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetTermsRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDNAME_FIELD_NUMBER = 2;
    private java.lang.Object fieldName_;
    /**
     * required string fieldName = 2;
     */
    public boolean hasFieldName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string fieldName = 2;
     */
    public java.lang.String getFieldName() {
      java.lang.Object ref = fieldName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          fieldName_ = s;
        }
        return s;
      }
    }
    /**
     * required string fieldName = 2;
     */
    public com.google.protobuf.ByteString
        getFieldNameBytes() {
      java.lang.Object ref = fieldName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fieldName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AMOUNT_FIELD_NUMBER = 3;
    private int amount_;
    /**
     * required uint32 amount = 3;
     */
    public boolean hasAmount() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * required uint32 amount = 3;
     */
    public int getAmount() {
      return amount_;
    }

    public static final int STARTINGTERM_FIELD_NUMBER = 4;
    private java.lang.Object startingTerm_;
    /**
     * optional string startingTerm = 4;
     */
    public boolean hasStartingTerm() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional string startingTerm = 4;
     */
    public java.lang.String getStartingTerm() {
      java.lang.Object ref = startingTerm_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          startingTerm_ = s;
        }
        return s;
      }
    }
    /**
     * optional string startingTerm = 4;
     */
    public com.google.protobuf.ByteString
        getStartingTermBytes() {
      java.lang.Object ref = startingTerm_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        startingTerm_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MINDOCFREQ_FIELD_NUMBER = 5;
    private int minDocFreq_;
    /**
     * optional uint32 minDocFreq = 5 [default = 1];
     */
    public boolean hasMinDocFreq() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 minDocFreq = 5 [default = 1];
     */
    public int getMinDocFreq() {
      return minDocFreq_;
    }

    public static final int REALTIME_FIELD_NUMBER = 6;
    private boolean realTime_;
    /**
     * optional bool realTime = 6 [default = true];
     */
    public boolean hasRealTime() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional bool realTime = 6 [default = true];
     */
    public boolean getRealTime() {
      return realTime_;
    }

    public static final int TERMFILTER_FIELD_NUMBER = 7;
    private java.lang.Object termFilter_;
    /**
     * optional string termFilter = 7;
     */
    public boolean hasTermFilter() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional string termFilter = 7;
     */
    public java.lang.String getTermFilter() {
      java.lang.Object ref = termFilter_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          termFilter_ = s;
        }
        return s;
      }
    }
    /**
     * optional string termFilter = 7;
     */
    public com.google.protobuf.ByteString
        getTermFilterBytes() {
      java.lang.Object ref = termFilter_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        termFilter_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TERMMATCH_FIELD_NUMBER = 8;
    private java.lang.Object termMatch_;
    /**
     * optional string termMatch = 8;
     */
    public boolean hasTermMatch() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional string termMatch = 8;
     */
    public java.lang.String getTermMatch() {
      java.lang.Object ref = termMatch_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          termMatch_ = s;
        }
        return s;
      }
    }
    /**
     * optional string termMatch = 8;
     */
    public com.google.protobuf.ByteString
        getTermMatchBytes() {
      java.lang.Object ref = termMatch_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        termMatch_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      indexName_ = "";
      fieldName_ = "";
      amount_ = 0;
      startingTerm_ = "";
      minDocFreq_ = 1;
      realTime_ = true;
      termFilter_ = "";
      termMatch_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFieldName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAmount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getFieldNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, amount_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getStartingTermBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, minDocFreq_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, realTime_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(7, getTermFilterBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getTermMatchBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getFieldNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, amount_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getStartingTermBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, minDocFreq_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, realTime_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getTermFilterBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getTermMatchBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetTermsRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetTermsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetTermsRequest)
        org.lumongo.cluster.message.Lumongo.GetTermsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetTermsRequest.class, org.lumongo.cluster.message.Lumongo.GetTermsRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetTermsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        fieldName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        amount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        startingTerm_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        minDocFreq_ = 1;
        bitField0_ = (bitField0_ & ~0x00000010);
        realTime_ = true;
        bitField0_ = (bitField0_ & ~0x00000020);
        termFilter_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        termMatch_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsRequest build() {
        org.lumongo.cluster.message.Lumongo.GetTermsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetTermsRequest result = new org.lumongo.cluster.message.Lumongo.GetTermsRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fieldName_ = fieldName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.amount_ = amount_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.startingTerm_ = startingTerm_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.minDocFreq_ = minDocFreq_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.realTime_ = realTime_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.termFilter_ = termFilter_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.termMatch_ = termMatch_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetTermsRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetTermsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetTermsRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasFieldName()) {
          bitField0_ |= 0x00000002;
          fieldName_ = other.fieldName_;
          onChanged();
        }
        if (other.hasAmount()) {
          setAmount(other.getAmount());
        }
        if (other.hasStartingTerm()) {
          bitField0_ |= 0x00000008;
          startingTerm_ = other.startingTerm_;
          onChanged();
        }
        if (other.hasMinDocFreq()) {
          setMinDocFreq(other.getMinDocFreq());
        }
        if (other.hasRealTime()) {
          setRealTime(other.getRealTime());
        }
        if (other.hasTermFilter()) {
          bitField0_ |= 0x00000040;
          termFilter_ = other.termFilter_;
          onChanged();
        }
        if (other.hasTermMatch()) {
          bitField0_ |= 0x00000080;
          termMatch_ = other.termMatch_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasFieldName()) {
          
          return false;
        }
        if (!hasAmount()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetTermsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetTermsRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fieldName_ = "";
      /**
       * required string fieldName = 2;
       */
      public boolean hasFieldName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string fieldName = 2;
       */
      public java.lang.String getFieldName() {
        java.lang.Object ref = fieldName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fieldName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string fieldName = 2;
       */
      public com.google.protobuf.ByteString
          getFieldNameBytes() {
        java.lang.Object ref = fieldName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fieldName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string fieldName = 2;
       */
      public Builder setFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fieldName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string fieldName = 2;
       */
      public Builder clearFieldName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fieldName_ = getDefaultInstance().getFieldName();
        onChanged();
        return this;
      }
      /**
       * required string fieldName = 2;
       */
      public Builder setFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        fieldName_ = value;
        onChanged();
        return this;
      }

      private int amount_ ;
      /**
       * required uint32 amount = 3;
       */
      public boolean hasAmount() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required uint32 amount = 3;
       */
      public int getAmount() {
        return amount_;
      }
      /**
       * required uint32 amount = 3;
       */
      public Builder setAmount(int value) {
        bitField0_ |= 0x00000004;
        amount_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 amount = 3;
       */
      public Builder clearAmount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        amount_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object startingTerm_ = "";
      /**
       * optional string startingTerm = 4;
       */
      public boolean hasStartingTerm() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional string startingTerm = 4;
       */
      public java.lang.String getStartingTerm() {
        java.lang.Object ref = startingTerm_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            startingTerm_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string startingTerm = 4;
       */
      public com.google.protobuf.ByteString
          getStartingTermBytes() {
        java.lang.Object ref = startingTerm_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          startingTerm_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string startingTerm = 4;
       */
      public Builder setStartingTerm(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        startingTerm_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string startingTerm = 4;
       */
      public Builder clearStartingTerm() {
        bitField0_ = (bitField0_ & ~0x00000008);
        startingTerm_ = getDefaultInstance().getStartingTerm();
        onChanged();
        return this;
      }
      /**
       * optional string startingTerm = 4;
       */
      public Builder setStartingTermBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        startingTerm_ = value;
        onChanged();
        return this;
      }

      private int minDocFreq_ = 1;
      /**
       * optional uint32 minDocFreq = 5 [default = 1];
       */
      public boolean hasMinDocFreq() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 minDocFreq = 5 [default = 1];
       */
      public int getMinDocFreq() {
        return minDocFreq_;
      }
      /**
       * optional uint32 minDocFreq = 5 [default = 1];
       */
      public Builder setMinDocFreq(int value) {
        bitField0_ |= 0x00000010;
        minDocFreq_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 minDocFreq = 5 [default = 1];
       */
      public Builder clearMinDocFreq() {
        bitField0_ = (bitField0_ & ~0x00000010);
        minDocFreq_ = 1;
        onChanged();
        return this;
      }

      private boolean realTime_ = true;
      /**
       * optional bool realTime = 6 [default = true];
       */
      public boolean hasRealTime() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional bool realTime = 6 [default = true];
       */
      public boolean getRealTime() {
        return realTime_;
      }
      /**
       * optional bool realTime = 6 [default = true];
       */
      public Builder setRealTime(boolean value) {
        bitField0_ |= 0x00000020;
        realTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool realTime = 6 [default = true];
       */
      public Builder clearRealTime() {
        bitField0_ = (bitField0_ & ~0x00000020);
        realTime_ = true;
        onChanged();
        return this;
      }

      private java.lang.Object termFilter_ = "";
      /**
       * optional string termFilter = 7;
       */
      public boolean hasTermFilter() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional string termFilter = 7;
       */
      public java.lang.String getTermFilter() {
        java.lang.Object ref = termFilter_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            termFilter_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string termFilter = 7;
       */
      public com.google.protobuf.ByteString
          getTermFilterBytes() {
        java.lang.Object ref = termFilter_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          termFilter_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string termFilter = 7;
       */
      public Builder setTermFilter(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        termFilter_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string termFilter = 7;
       */
      public Builder clearTermFilter() {
        bitField0_ = (bitField0_ & ~0x00000040);
        termFilter_ = getDefaultInstance().getTermFilter();
        onChanged();
        return this;
      }
      /**
       * optional string termFilter = 7;
       */
      public Builder setTermFilterBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        termFilter_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object termMatch_ = "";
      /**
       * optional string termMatch = 8;
       */
      public boolean hasTermMatch() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional string termMatch = 8;
       */
      public java.lang.String getTermMatch() {
        java.lang.Object ref = termMatch_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            termMatch_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string termMatch = 8;
       */
      public com.google.protobuf.ByteString
          getTermMatchBytes() {
        java.lang.Object ref = termMatch_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          termMatch_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string termMatch = 8;
       */
      public Builder setTermMatch(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        termMatch_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string termMatch = 8;
       */
      public Builder clearTermMatch() {
        bitField0_ = (bitField0_ & ~0x00000080);
        termMatch_ = getDefaultInstance().getTermMatch();
        onChanged();
        return this;
      }
      /**
       * optional string termMatch = 8;
       */
      public Builder setTermMatchBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        termMatch_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetTermsRequest)
    }

    static {
      defaultInstance = new GetTermsRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetTermsRequest)
  }

  public interface GetTermsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetTermsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .Term term = 1;
     */
    java.util.List 
        getTermList();
    /**
     * repeated .Term term = 1;
     */
    org.lumongo.cluster.message.Lumongo.Term getTerm(int index);
    /**
     * repeated .Term term = 1;
     */
    int getTermCount();
    /**
     * repeated .Term term = 1;
     */
    java.util.List 
        getTermOrBuilderList();
    /**
     * repeated .Term term = 1;
     */
    org.lumongo.cluster.message.Lumongo.TermOrBuilder getTermOrBuilder(
        int index);

    /**
     * optional .Term lastTerm = 2;
     */
    boolean hasLastTerm();
    /**
     * optional .Term lastTerm = 2;
     */
    org.lumongo.cluster.message.Lumongo.Term getLastTerm();
    /**
     * optional .Term lastTerm = 2;
     */
    org.lumongo.cluster.message.Lumongo.TermOrBuilder getLastTermOrBuilder();
  }
  /**
   * Protobuf type {@code GetTermsResponse}
   */
  public static final class GetTermsResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetTermsResponse)
      GetTermsResponseOrBuilder {
    // Use GetTermsResponse.newBuilder() to construct.
    private GetTermsResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetTermsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetTermsResponse defaultInstance;
    public static GetTermsResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GetTermsResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetTermsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                term_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              term_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.Term.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              org.lumongo.cluster.message.Lumongo.Term.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = lastTerm_.toBuilder();
              }
              lastTerm_ = input.readMessage(org.lumongo.cluster.message.Lumongo.Term.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(lastTerm_);
                lastTerm_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          term_ = java.util.Collections.unmodifiableList(term_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetTermsResponse.class, org.lumongo.cluster.message.Lumongo.GetTermsResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetTermsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetTermsResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TERM_FIELD_NUMBER = 1;
    private java.util.List term_;
    /**
     * repeated .Term term = 1;
     */
    public java.util.List getTermList() {
      return term_;
    }
    /**
     * repeated .Term term = 1;
     */
    public java.util.List 
        getTermOrBuilderList() {
      return term_;
    }
    /**
     * repeated .Term term = 1;
     */
    public int getTermCount() {
      return term_.size();
    }
    /**
     * repeated .Term term = 1;
     */
    public org.lumongo.cluster.message.Lumongo.Term getTerm(int index) {
      return term_.get(index);
    }
    /**
     * repeated .Term term = 1;
     */
    public org.lumongo.cluster.message.Lumongo.TermOrBuilder getTermOrBuilder(
        int index) {
      return term_.get(index);
    }

    public static final int LASTTERM_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.Term lastTerm_;
    /**
     * optional .Term lastTerm = 2;
     */
    public boolean hasLastTerm() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional .Term lastTerm = 2;
     */
    public org.lumongo.cluster.message.Lumongo.Term getLastTerm() {
      return lastTerm_;
    }
    /**
     * optional .Term lastTerm = 2;
     */
    public org.lumongo.cluster.message.Lumongo.TermOrBuilder getLastTermOrBuilder() {
      return lastTerm_;
    }

    private void initFields() {
      term_ = java.util.Collections.emptyList();
      lastTerm_ = org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getTermCount(); i++) {
        if (!getTerm(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLastTerm()) {
        if (!getLastTerm().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < term_.size(); i++) {
        output.writeMessage(1, term_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(2, lastTerm_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < term_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, term_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, lastTerm_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetTermsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetTermsResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetTermsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetTermsResponse)
        org.lumongo.cluster.message.Lumongo.GetTermsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetTermsResponse.class, org.lumongo.cluster.message.Lumongo.GetTermsResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetTermsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTermFieldBuilder();
          getLastTermFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (termBuilder_ == null) {
          term_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          termBuilder_.clear();
        }
        if (lastTermBuilder_ == null) {
          lastTerm_ = org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance();
        } else {
          lastTermBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetTermsResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsResponse build() {
        org.lumongo.cluster.message.Lumongo.GetTermsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetTermsResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetTermsResponse result = new org.lumongo.cluster.message.Lumongo.GetTermsResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (termBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            term_ = java.util.Collections.unmodifiableList(term_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.term_ = term_;
        } else {
          result.term_ = termBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        if (lastTermBuilder_ == null) {
          result.lastTerm_ = lastTerm_;
        } else {
          result.lastTerm_ = lastTermBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetTermsResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetTermsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetTermsResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance()) return this;
        if (termBuilder_ == null) {
          if (!other.term_.isEmpty()) {
            if (term_.isEmpty()) {
              term_ = other.term_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTermIsMutable();
              term_.addAll(other.term_);
            }
            onChanged();
          }
        } else {
          if (!other.term_.isEmpty()) {
            if (termBuilder_.isEmpty()) {
              termBuilder_.dispose();
              termBuilder_ = null;
              term_ = other.term_;
              bitField0_ = (bitField0_ & ~0x00000001);
              termBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTermFieldBuilder() : null;
            } else {
              termBuilder_.addAllMessages(other.term_);
            }
          }
        }
        if (other.hasLastTerm()) {
          mergeLastTerm(other.getLastTerm());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getTermCount(); i++) {
          if (!getTerm(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasLastTerm()) {
          if (!getLastTerm().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetTermsResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetTermsResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List term_ =
        java.util.Collections.emptyList();
      private void ensureTermIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          term_ = new java.util.ArrayList(term_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder> termBuilder_;

      /**
       * repeated .Term term = 1;
       */
      public java.util.List getTermList() {
        if (termBuilder_ == null) {
          return java.util.Collections.unmodifiableList(term_);
        } else {
          return termBuilder_.getMessageList();
        }
      }
      /**
       * repeated .Term term = 1;
       */
      public int getTermCount() {
        if (termBuilder_ == null) {
          return term_.size();
        } else {
          return termBuilder_.getCount();
        }
      }
      /**
       * repeated .Term term = 1;
       */
      public org.lumongo.cluster.message.Lumongo.Term getTerm(int index) {
        if (termBuilder_ == null) {
          return term_.get(index);
        } else {
          return termBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder setTerm(
          int index, org.lumongo.cluster.message.Lumongo.Term value) {
        if (termBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTermIsMutable();
          term_.set(index, value);
          onChanged();
        } else {
          termBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder setTerm(
          int index, org.lumongo.cluster.message.Lumongo.Term.Builder builderForValue) {
        if (termBuilder_ == null) {
          ensureTermIsMutable();
          term_.set(index, builderForValue.build());
          onChanged();
        } else {
          termBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder addTerm(org.lumongo.cluster.message.Lumongo.Term value) {
        if (termBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTermIsMutable();
          term_.add(value);
          onChanged();
        } else {
          termBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder addTerm(
          int index, org.lumongo.cluster.message.Lumongo.Term value) {
        if (termBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTermIsMutable();
          term_.add(index, value);
          onChanged();
        } else {
          termBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder addTerm(
          org.lumongo.cluster.message.Lumongo.Term.Builder builderForValue) {
        if (termBuilder_ == null) {
          ensureTermIsMutable();
          term_.add(builderForValue.build());
          onChanged();
        } else {
          termBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder addTerm(
          int index, org.lumongo.cluster.message.Lumongo.Term.Builder builderForValue) {
        if (termBuilder_ == null) {
          ensureTermIsMutable();
          term_.add(index, builderForValue.build());
          onChanged();
        } else {
          termBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder addAllTerm(
          java.lang.Iterable values) {
        if (termBuilder_ == null) {
          ensureTermIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, term_);
          onChanged();
        } else {
          termBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder clearTerm() {
        if (termBuilder_ == null) {
          term_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          termBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public Builder removeTerm(int index) {
        if (termBuilder_ == null) {
          ensureTermIsMutable();
          term_.remove(index);
          onChanged();
        } else {
          termBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .Term term = 1;
       */
      public org.lumongo.cluster.message.Lumongo.Term.Builder getTermBuilder(
          int index) {
        return getTermFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .Term term = 1;
       */
      public org.lumongo.cluster.message.Lumongo.TermOrBuilder getTermOrBuilder(
          int index) {
        if (termBuilder_ == null) {
          return term_.get(index);  } else {
          return termBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .Term term = 1;
       */
      public java.util.List 
           getTermOrBuilderList() {
        if (termBuilder_ != null) {
          return termBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(term_);
        }
      }
      /**
       * repeated .Term term = 1;
       */
      public org.lumongo.cluster.message.Lumongo.Term.Builder addTermBuilder() {
        return getTermFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance());
      }
      /**
       * repeated .Term term = 1;
       */
      public org.lumongo.cluster.message.Lumongo.Term.Builder addTermBuilder(
          int index) {
        return getTermFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance());
      }
      /**
       * repeated .Term term = 1;
       */
      public java.util.List 
           getTermBuilderList() {
        return getTermFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder> 
          getTermFieldBuilder() {
        if (termBuilder_ == null) {
          termBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder>(
                  term_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          term_ = null;
        }
        return termBuilder_;
      }

      private org.lumongo.cluster.message.Lumongo.Term lastTerm_ = org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder> lastTermBuilder_;
      /**
       * optional .Term lastTerm = 2;
       */
      public boolean hasLastTerm() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public org.lumongo.cluster.message.Lumongo.Term getLastTerm() {
        if (lastTermBuilder_ == null) {
          return lastTerm_;
        } else {
          return lastTermBuilder_.getMessage();
        }
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public Builder setLastTerm(org.lumongo.cluster.message.Lumongo.Term value) {
        if (lastTermBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastTerm_ = value;
          onChanged();
        } else {
          lastTermBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public Builder setLastTerm(
          org.lumongo.cluster.message.Lumongo.Term.Builder builderForValue) {
        if (lastTermBuilder_ == null) {
          lastTerm_ = builderForValue.build();
          onChanged();
        } else {
          lastTermBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public Builder mergeLastTerm(org.lumongo.cluster.message.Lumongo.Term value) {
        if (lastTermBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              lastTerm_ != org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance()) {
            lastTerm_ =
              org.lumongo.cluster.message.Lumongo.Term.newBuilder(lastTerm_).mergeFrom(value).buildPartial();
          } else {
            lastTerm_ = value;
          }
          onChanged();
        } else {
          lastTermBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public Builder clearLastTerm() {
        if (lastTermBuilder_ == null) {
          lastTerm_ = org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance();
          onChanged();
        } else {
          lastTermBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public org.lumongo.cluster.message.Lumongo.Term.Builder getLastTermBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getLastTermFieldBuilder().getBuilder();
      }
      /**
       * optional .Term lastTerm = 2;
       */
      public org.lumongo.cluster.message.Lumongo.TermOrBuilder getLastTermOrBuilder() {
        if (lastTermBuilder_ != null) {
          return lastTermBuilder_.getMessageOrBuilder();
        } else {
          return lastTerm_;
        }
      }
      /**
       * optional .Term lastTerm = 2;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder> 
          getLastTermFieldBuilder() {
        if (lastTermBuilder_ == null) {
          lastTermBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.Term, org.lumongo.cluster.message.Lumongo.Term.Builder, org.lumongo.cluster.message.Lumongo.TermOrBuilder>(
                  getLastTerm(),
                  getParentForChildren(),
                  isClean());
          lastTerm_ = null;
        }
        return lastTermBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetTermsResponse)
    }

    static {
      defaultInstance = new GetTermsResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetTermsResponse)
  }

  public interface TermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Term)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string value = 1;
     */
    boolean hasValue();
    /**
     * required string value = 1;
     */
    java.lang.String getValue();
    /**
     * required string value = 1;
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * optional uint64 docFreq = 2;
     */
    boolean hasDocFreq();
    /**
     * optional uint64 docFreq = 2;
     */
    long getDocFreq();
  }
  /**
   * Protobuf type {@code Term}
   */
  public static final class Term extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:Term)
      TermOrBuilder {
    // Use Term.newBuilder() to construct.
    private Term(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Term(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Term defaultInstance;
    public static Term getDefaultInstance() {
      return defaultInstance;
    }

    public Term getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Term(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              value_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              docFreq_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_Term_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_Term_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.Term.class, org.lumongo.cluster.message.Lumongo.Term.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public Term parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Term(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private java.lang.Object value_;
    /**
     * required string value = 1;
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string value = 1;
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * required string value = 1;
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCFREQ_FIELD_NUMBER = 2;
    private long docFreq_;
    /**
     * optional uint64 docFreq = 2;
     */
    public boolean hasDocFreq() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint64 docFreq = 2;
     */
    public long getDocFreq() {
      return docFreq_;
    }

    private void initFields() {
      value_ = "";
      docFreq_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, docFreq_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, docFreq_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Term parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.Term prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Term}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:Term)
        org.lumongo.cluster.message.Lumongo.TermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Term_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Term_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.Term.class, org.lumongo.cluster.message.Lumongo.Term.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.Term.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        docFreq_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Term_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.Term getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.Term build() {
        org.lumongo.cluster.message.Lumongo.Term result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.Term buildPartial() {
        org.lumongo.cluster.message.Lumongo.Term result = new org.lumongo.cluster.message.Lumongo.Term(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.docFreq_ = docFreq_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.Term) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.Term)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.Term other) {
        if (other == org.lumongo.cluster.message.Lumongo.Term.getDefaultInstance()) return this;
        if (other.hasValue()) {
          bitField0_ |= 0x00000001;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasDocFreq()) {
          setDocFreq(other.getDocFreq());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.Term parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.Term) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object value_ = "";
      /**
       * required string value = 1;
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string value = 1;
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string value = 1;
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string value = 1;
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * required string value = 1;
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * required string value = 1;
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }

      private long docFreq_ ;
      /**
       * optional uint64 docFreq = 2;
       */
      public boolean hasDocFreq() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint64 docFreq = 2;
       */
      public long getDocFreq() {
        return docFreq_;
      }
      /**
       * optional uint64 docFreq = 2;
       */
      public Builder setDocFreq(long value) {
        bitField0_ |= 0x00000002;
        docFreq_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 docFreq = 2;
       */
      public Builder clearDocFreq() {
        bitField0_ = (bitField0_ & ~0x00000002);
        docFreq_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Term)
    }

    static {
      defaultInstance = new Term(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Term)
  }

  public interface GetFieldNamesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetFieldNamesRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();
  }
  /**
   * Protobuf type {@code GetFieldNamesRequest}
   */
  public static final class GetFieldNamesRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetFieldNamesRequest)
      GetFieldNamesRequestOrBuilder {
    // Use GetFieldNamesRequest.newBuilder() to construct.
    private GetFieldNamesRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetFieldNamesRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetFieldNamesRequest defaultInstance;
    public static GetFieldNamesRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetFieldNamesRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetFieldNamesRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.class, org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetFieldNamesRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetFieldNamesRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      indexName_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetFieldNamesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetFieldNamesRequest)
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.class, org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest build() {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest result = new org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetFieldNamesRequest)
    }

    static {
      defaultInstance = new GetFieldNamesRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetFieldNamesRequest)
  }

  public interface GetFieldNamesResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetFieldNamesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string fieldName = 1;
     */
    com.google.protobuf.ProtocolStringList
        getFieldNameList();
    /**
     * repeated string fieldName = 1;
     */
    int getFieldNameCount();
    /**
     * repeated string fieldName = 1;
     */
    java.lang.String getFieldName(int index);
    /**
     * repeated string fieldName = 1;
     */
    com.google.protobuf.ByteString
        getFieldNameBytes(int index);
  }
  /**
   * Protobuf type {@code GetFieldNamesResponse}
   */
  public static final class GetFieldNamesResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetFieldNamesResponse)
      GetFieldNamesResponseOrBuilder {
    // Use GetFieldNamesResponse.newBuilder() to construct.
    private GetFieldNamesResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetFieldNamesResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetFieldNamesResponse defaultInstance;
    public static GetFieldNamesResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GetFieldNamesResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetFieldNamesResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fieldName_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fieldName_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fieldName_ = fieldName_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.class, org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetFieldNamesResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetFieldNamesResponse(input, extensionRegistry);
      }
    };

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

    public static final int FIELDNAME_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList fieldName_;
    /**
     * repeated string fieldName = 1;
     */
    public com.google.protobuf.ProtocolStringList
        getFieldNameList() {
      return fieldName_;
    }
    /**
     * repeated string fieldName = 1;
     */
    public int getFieldNameCount() {
      return fieldName_.size();
    }
    /**
     * repeated string fieldName = 1;
     */
    public java.lang.String getFieldName(int index) {
      return fieldName_.get(index);
    }
    /**
     * repeated string fieldName = 1;
     */
    public com.google.protobuf.ByteString
        getFieldNameBytes(int index) {
      return fieldName_.getByteString(index);
    }

    private void initFields() {
      fieldName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < fieldName_.size(); i++) {
        output.writeBytes(1, fieldName_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < fieldName_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(fieldName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getFieldNameList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetFieldNamesResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetFieldNamesResponse)
        org.lumongo.cluster.message.Lumongo.GetFieldNamesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.class, org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        fieldName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetFieldNamesResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse build() {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse result = new org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          fieldName_ = fieldName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.fieldName_ = fieldName_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance()) return this;
        if (!other.fieldName_.isEmpty()) {
          if (fieldName_.isEmpty()) {
            fieldName_ = other.fieldName_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureFieldNameIsMutable();
            fieldName_.addAll(other.fieldName_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList fieldName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFieldNameIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fieldName_ = new com.google.protobuf.LazyStringArrayList(fieldName_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string fieldName = 1;
       */
      public com.google.protobuf.ProtocolStringList
          getFieldNameList() {
        return fieldName_.getUnmodifiableView();
      }
      /**
       * repeated string fieldName = 1;
       */
      public int getFieldNameCount() {
        return fieldName_.size();
      }
      /**
       * repeated string fieldName = 1;
       */
      public java.lang.String getFieldName(int index) {
        return fieldName_.get(index);
      }
      /**
       * repeated string fieldName = 1;
       */
      public com.google.protobuf.ByteString
          getFieldNameBytes(int index) {
        return fieldName_.getByteString(index);
      }
      /**
       * repeated string fieldName = 1;
       */
      public Builder setFieldName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldNameIsMutable();
        fieldName_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldName = 1;
       */
      public Builder addFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldNameIsMutable();
        fieldName_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldName = 1;
       */
      public Builder addAllFieldName(
          java.lang.Iterable values) {
        ensureFieldNameIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fieldName_);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldName = 1;
       */
      public Builder clearFieldName() {
        fieldName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldName = 1;
       */
      public Builder addFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldNameIsMutable();
        fieldName_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetFieldNamesResponse)
    }

    static {
      defaultInstance = new GetFieldNamesResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetFieldNamesResponse)
  }

  public interface ClearRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ClearRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();
  }
  /**
   * Protobuf type {@code ClearRequest}
   */
  public static final class ClearRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:ClearRequest)
      ClearRequestOrBuilder {
    // Use ClearRequest.newBuilder() to construct.
    private ClearRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ClearRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ClearRequest defaultInstance;
    public static ClearRequest getDefaultInstance() {
      return defaultInstance;
    }

    public ClearRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ClearRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ClearRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ClearRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.ClearRequest.class, org.lumongo.cluster.message.Lumongo.ClearRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public ClearRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ClearRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      indexName_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.ClearRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ClearRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:ClearRequest)
        org.lumongo.cluster.message.Lumongo.ClearRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.ClearRequest.class, org.lumongo.cluster.message.Lumongo.ClearRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.ClearRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.ClearRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.ClearRequest build() {
        org.lumongo.cluster.message.Lumongo.ClearRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.ClearRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.ClearRequest result = new org.lumongo.cluster.message.Lumongo.ClearRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.ClearRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.ClearRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.ClearRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.ClearRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.ClearRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ClearRequest)
    }

    static {
      defaultInstance = new ClearRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ClearRequest)
  }

  public interface ClearResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ClearResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code ClearResponse}
   */
  public static final class ClearResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:ClearResponse)
      ClearResponseOrBuilder {
    // Use ClearResponse.newBuilder() to construct.
    private ClearResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ClearResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ClearResponse defaultInstance;
    public static ClearResponse getDefaultInstance() {
      return defaultInstance;
    }

    public ClearResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ClearResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ClearResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ClearResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.ClearResponse.class, org.lumongo.cluster.message.Lumongo.ClearResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public ClearResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ClearResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ClearResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.ClearResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ClearResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:ClearResponse)
        org.lumongo.cluster.message.Lumongo.ClearResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.ClearResponse.class, org.lumongo.cluster.message.Lumongo.ClearResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.ClearResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ClearResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.ClearResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.ClearResponse build() {
        org.lumongo.cluster.message.Lumongo.ClearResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.ClearResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.ClearResponse result = new org.lumongo.cluster.message.Lumongo.ClearResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.ClearResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.ClearResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.ClearResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.ClearResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.ClearResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ClearResponse)
    }

    static {
      defaultInstance = new ClearResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ClearResponse)
  }

  public interface OptimizeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:OptimizeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();
  }
  /**
   * Protobuf type {@code OptimizeRequest}
   */
  public static final class OptimizeRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:OptimizeRequest)
      OptimizeRequestOrBuilder {
    // Use OptimizeRequest.newBuilder() to construct.
    private OptimizeRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private OptimizeRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final OptimizeRequest defaultInstance;
    public static OptimizeRequest getDefaultInstance() {
      return defaultInstance;
    }

    public OptimizeRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private OptimizeRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.OptimizeRequest.class, org.lumongo.cluster.message.Lumongo.OptimizeRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public OptimizeRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new OptimizeRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      indexName_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.OptimizeRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code OptimizeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:OptimizeRequest)
        org.lumongo.cluster.message.Lumongo.OptimizeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.OptimizeRequest.class, org.lumongo.cluster.message.Lumongo.OptimizeRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.OptimizeRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeRequest build() {
        org.lumongo.cluster.message.Lumongo.OptimizeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.OptimizeRequest result = new org.lumongo.cluster.message.Lumongo.OptimizeRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.OptimizeRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.OptimizeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.OptimizeRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.OptimizeRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.OptimizeRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:OptimizeRequest)
    }

    static {
      defaultInstance = new OptimizeRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:OptimizeRequest)
  }

  public interface OptimizeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:OptimizeResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code OptimizeResponse}
   */
  public static final class OptimizeResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:OptimizeResponse)
      OptimizeResponseOrBuilder {
    // Use OptimizeResponse.newBuilder() to construct.
    private OptimizeResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private OptimizeResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final OptimizeResponse defaultInstance;
    public static OptimizeResponse getDefaultInstance() {
      return defaultInstance;
    }

    public OptimizeResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private OptimizeResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.OptimizeResponse.class, org.lumongo.cluster.message.Lumongo.OptimizeResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public OptimizeResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new OptimizeResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.OptimizeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.OptimizeResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code OptimizeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:OptimizeResponse)
        org.lumongo.cluster.message.Lumongo.OptimizeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.OptimizeResponse.class, org.lumongo.cluster.message.Lumongo.OptimizeResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.OptimizeResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_OptimizeResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeResponse build() {
        org.lumongo.cluster.message.Lumongo.OptimizeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.OptimizeResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.OptimizeResponse result = new org.lumongo.cluster.message.Lumongo.OptimizeResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.OptimizeResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.OptimizeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.OptimizeResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.OptimizeResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.OptimizeResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:OptimizeResponse)
    }

    static {
      defaultInstance = new OptimizeResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:OptimizeResponse)
  }

  public interface GetIndexesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetIndexesRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code GetIndexesRequest}
   */
  public static final class GetIndexesRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetIndexesRequest)
      GetIndexesRequestOrBuilder {
    // Use GetIndexesRequest.newBuilder() to construct.
    private GetIndexesRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetIndexesRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetIndexesRequest defaultInstance;
    public static GetIndexesRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetIndexesRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetIndexesRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetIndexesRequest.class, org.lumongo.cluster.message.Lumongo.GetIndexesRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetIndexesRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetIndexesRequest(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetIndexesRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetIndexesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetIndexesRequest)
        org.lumongo.cluster.message.Lumongo.GetIndexesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetIndexesRequest.class, org.lumongo.cluster.message.Lumongo.GetIndexesRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetIndexesRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetIndexesRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesRequest build() {
        org.lumongo.cluster.message.Lumongo.GetIndexesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetIndexesRequest result = new org.lumongo.cluster.message.Lumongo.GetIndexesRequest(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetIndexesRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetIndexesRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetIndexesRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetIndexesRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetIndexesRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetIndexesRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetIndexesRequest)
    }

    static {
      defaultInstance = new GetIndexesRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetIndexesRequest)
  }

  public interface GetIndexesResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetIndexesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string indexName = 1;
     */
    com.google.protobuf.ProtocolStringList
        getIndexNameList();
    /**
     * repeated string indexName = 1;
     */
    int getIndexNameCount();
    /**
     * repeated string indexName = 1;
     */
    java.lang.String getIndexName(int index);
    /**
     * repeated string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes(int index);
  }
  /**
   * Protobuf type {@code GetIndexesResponse}
   */
  public static final class GetIndexesResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetIndexesResponse)
      GetIndexesResponseOrBuilder {
    // Use GetIndexesResponse.newBuilder() to construct.
    private GetIndexesResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetIndexesResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetIndexesResponse defaultInstance;
    public static GetIndexesResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GetIndexesResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetIndexesResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                indexName_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              indexName_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          indexName_ = indexName_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetIndexesResponse.class, org.lumongo.cluster.message.Lumongo.GetIndexesResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetIndexesResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetIndexesResponse(input, extensionRegistry);
      }
    };

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

    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList indexName_;
    /**
     * repeated string indexName = 1;
     */
    public com.google.protobuf.ProtocolStringList
        getIndexNameList() {
      return indexName_;
    }
    /**
     * repeated string indexName = 1;
     */
    public int getIndexNameCount() {
      return indexName_.size();
    }
    /**
     * repeated string indexName = 1;
     */
    public java.lang.String getIndexName(int index) {
      return indexName_.get(index);
    }
    /**
     * repeated string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes(int index) {
      return indexName_.getByteString(index);
    }

    private void initFields() {
      indexName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < indexName_.size(); i++) {
        output.writeBytes(1, indexName_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < indexName_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(indexName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getIndexNameList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetIndexesResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetIndexesResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetIndexesResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetIndexesResponse)
        org.lumongo.cluster.message.Lumongo.GetIndexesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetIndexesResponse.class, org.lumongo.cluster.message.Lumongo.GetIndexesResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetIndexesResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetIndexesResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesResponse build() {
        org.lumongo.cluster.message.Lumongo.GetIndexesResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetIndexesResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetIndexesResponse result = new org.lumongo.cluster.message.Lumongo.GetIndexesResponse(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          indexName_ = indexName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.indexName_ = indexName_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetIndexesResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetIndexesResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetIndexesResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance()) return this;
        if (!other.indexName_.isEmpty()) {
          if (indexName_.isEmpty()) {
            indexName_ = other.indexName_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIndexNameIsMutable();
            indexName_.addAll(other.indexName_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetIndexesResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetIndexesResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList indexName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIndexNameIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          indexName_ = new com.google.protobuf.LazyStringArrayList(indexName_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string indexName = 1;
       */
      public com.google.protobuf.ProtocolStringList
          getIndexNameList() {
        return indexName_.getUnmodifiableView();
      }
      /**
       * repeated string indexName = 1;
       */
      public int getIndexNameCount() {
        return indexName_.size();
      }
      /**
       * repeated string indexName = 1;
       */
      public java.lang.String getIndexName(int index) {
        return indexName_.get(index);
      }
      /**
       * repeated string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes(int index) {
        return indexName_.getByteString(index);
      }
      /**
       * repeated string indexName = 1;
       */
      public Builder setIndexName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexNameIsMutable();
        indexName_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string indexName = 1;
       */
      public Builder addIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexNameIsMutable();
        indexName_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string indexName = 1;
       */
      public Builder addAllIndexName(
          java.lang.Iterable values) {
        ensureIndexNameIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, indexName_);
        onChanged();
        return this;
      }
      /**
       * repeated string indexName = 1;
       */
      public Builder clearIndexName() {
        indexName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string indexName = 1;
       */
      public Builder addIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexNameIsMutable();
        indexName_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetIndexesResponse)
    }

    static {
      defaultInstance = new GetIndexesResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetIndexesResponse)
  }

  public interface GetNumberOfDocsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetNumberOfDocsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * optional bool realTime = 2 [default = true];
     */
    boolean hasRealTime();
    /**
     * optional bool realTime = 2 [default = true];
     */
    boolean getRealTime();
  }
  /**
   * Protobuf type {@code GetNumberOfDocsRequest}
   */
  public static final class GetNumberOfDocsRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetNumberOfDocsRequest)
      GetNumberOfDocsRequestOrBuilder {
    // Use GetNumberOfDocsRequest.newBuilder() to construct.
    private GetNumberOfDocsRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetNumberOfDocsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetNumberOfDocsRequest defaultInstance;
    public static GetNumberOfDocsRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GetNumberOfDocsRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetNumberOfDocsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              realTime_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.class, org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetNumberOfDocsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetNumberOfDocsRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REALTIME_FIELD_NUMBER = 2;
    private boolean realTime_;
    /**
     * optional bool realTime = 2 [default = true];
     */
    public boolean hasRealTime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional bool realTime = 2 [default = true];
     */
    public boolean getRealTime() {
      return realTime_;
    }

    private void initFields() {
      indexName_ = "";
      realTime_ = true;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, realTime_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, realTime_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetNumberOfDocsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetNumberOfDocsRequest)
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.class, org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        realTime_ = true;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest build() {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest result = new org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.realTime_ = realTime_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasRealTime()) {
          setRealTime(other.getRealTime());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private boolean realTime_ = true;
      /**
       * optional bool realTime = 2 [default = true];
       */
      public boolean hasRealTime() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional bool realTime = 2 [default = true];
       */
      public boolean getRealTime() {
        return realTime_;
      }
      /**
       * optional bool realTime = 2 [default = true];
       */
      public Builder setRealTime(boolean value) {
        bitField0_ |= 0x00000002;
        realTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool realTime = 2 [default = true];
       */
      public Builder clearRealTime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        realTime_ = true;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GetNumberOfDocsRequest)
    }

    static {
      defaultInstance = new GetNumberOfDocsRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetNumberOfDocsRequest)
  }

  public interface GetNumberOfDocsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GetNumberOfDocsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required uint64 numberOfDocs = 1;
     */
    boolean hasNumberOfDocs();
    /**
     * required uint64 numberOfDocs = 1;
     */
    long getNumberOfDocs();

    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    java.util.List 
        getSegmentCountResponseList();
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    org.lumongo.cluster.message.Lumongo.SegmentCountResponse getSegmentCountResponse(int index);
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    int getSegmentCountResponseCount();
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    java.util.List 
        getSegmentCountResponseOrBuilderList();
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder getSegmentCountResponseOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GetNumberOfDocsResponse}
   */
  public static final class GetNumberOfDocsResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:GetNumberOfDocsResponse)
      GetNumberOfDocsResponseOrBuilder {
    // Use GetNumberOfDocsResponse.newBuilder() to construct.
    private GetNumberOfDocsResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GetNumberOfDocsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GetNumberOfDocsResponse defaultInstance;
    public static GetNumberOfDocsResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GetNumberOfDocsResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GetNumberOfDocsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              numberOfDocs_ = input.readUInt64();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                segmentCountResponse_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              segmentCountResponse_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.SegmentCountResponse.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          segmentCountResponse_ = java.util.Collections.unmodifiableList(segmentCountResponse_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.class, org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public GetNumberOfDocsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetNumberOfDocsResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int NUMBEROFDOCS_FIELD_NUMBER = 1;
    private long numberOfDocs_;
    /**
     * required uint64 numberOfDocs = 1;
     */
    public boolean hasNumberOfDocs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required uint64 numberOfDocs = 1;
     */
    public long getNumberOfDocs() {
      return numberOfDocs_;
    }

    public static final int SEGMENTCOUNTRESPONSE_FIELD_NUMBER = 2;
    private java.util.List segmentCountResponse_;
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    public java.util.List getSegmentCountResponseList() {
      return segmentCountResponse_;
    }
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    public java.util.List 
        getSegmentCountResponseOrBuilderList() {
      return segmentCountResponse_;
    }
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    public int getSegmentCountResponseCount() {
      return segmentCountResponse_.size();
    }
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentCountResponse getSegmentCountResponse(int index) {
      return segmentCountResponse_.get(index);
    }
    /**
     * repeated .SegmentCountResponse segmentCountResponse = 2;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder getSegmentCountResponseOrBuilder(
        int index) {
      return segmentCountResponse_.get(index);
    }

    private void initFields() {
      numberOfDocs_ = 0L;
      segmentCountResponse_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasNumberOfDocs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSegmentCountResponseCount(); i++) {
        if (!getSegmentCountResponse(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, numberOfDocs_);
      }
      for (int i = 0; i < segmentCountResponse_.size(); i++) {
        output.writeMessage(2, segmentCountResponse_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, numberOfDocs_);
      }
      for (int i = 0; i < segmentCountResponse_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, segmentCountResponse_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GetNumberOfDocsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:GetNumberOfDocsResponse)
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.class, org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSegmentCountResponseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        numberOfDocs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (segmentCountResponseBuilder_ == null) {
          segmentCountResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          segmentCountResponseBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_GetNumberOfDocsResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse build() {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse result = new org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.numberOfDocs_ = numberOfDocs_;
        if (segmentCountResponseBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            segmentCountResponse_ = java.util.Collections.unmodifiableList(segmentCountResponse_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.segmentCountResponse_ = segmentCountResponse_;
        } else {
          result.segmentCountResponse_ = segmentCountResponseBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance()) return this;
        if (other.hasNumberOfDocs()) {
          setNumberOfDocs(other.getNumberOfDocs());
        }
        if (segmentCountResponseBuilder_ == null) {
          if (!other.segmentCountResponse_.isEmpty()) {
            if (segmentCountResponse_.isEmpty()) {
              segmentCountResponse_ = other.segmentCountResponse_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSegmentCountResponseIsMutable();
              segmentCountResponse_.addAll(other.segmentCountResponse_);
            }
            onChanged();
          }
        } else {
          if (!other.segmentCountResponse_.isEmpty()) {
            if (segmentCountResponseBuilder_.isEmpty()) {
              segmentCountResponseBuilder_.dispose();
              segmentCountResponseBuilder_ = null;
              segmentCountResponse_ = other.segmentCountResponse_;
              bitField0_ = (bitField0_ & ~0x00000002);
              segmentCountResponseBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSegmentCountResponseFieldBuilder() : null;
            } else {
              segmentCountResponseBuilder_.addAllMessages(other.segmentCountResponse_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNumberOfDocs()) {
          
          return false;
        }
        for (int i = 0; i < getSegmentCountResponseCount(); i++) {
          if (!getSegmentCountResponse(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long numberOfDocs_ ;
      /**
       * required uint64 numberOfDocs = 1;
       */
      public boolean hasNumberOfDocs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required uint64 numberOfDocs = 1;
       */
      public long getNumberOfDocs() {
        return numberOfDocs_;
      }
      /**
       * required uint64 numberOfDocs = 1;
       */
      public Builder setNumberOfDocs(long value) {
        bitField0_ |= 0x00000001;
        numberOfDocs_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint64 numberOfDocs = 1;
       */
      public Builder clearNumberOfDocs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        numberOfDocs_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List segmentCountResponse_ =
        java.util.Collections.emptyList();
      private void ensureSegmentCountResponseIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          segmentCountResponse_ = new java.util.ArrayList(segmentCountResponse_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentCountResponse, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder> segmentCountResponseBuilder_;

      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public java.util.List getSegmentCountResponseList() {
        if (segmentCountResponseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(segmentCountResponse_);
        } else {
          return segmentCountResponseBuilder_.getMessageList();
        }
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public int getSegmentCountResponseCount() {
        if (segmentCountResponseBuilder_ == null) {
          return segmentCountResponse_.size();
        } else {
          return segmentCountResponseBuilder_.getCount();
        }
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse getSegmentCountResponse(int index) {
        if (segmentCountResponseBuilder_ == null) {
          return segmentCountResponse_.get(index);
        } else {
          return segmentCountResponseBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder setSegmentCountResponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentCountResponse value) {
        if (segmentCountResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.set(index, value);
          onChanged();
        } else {
          segmentCountResponseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder setSegmentCountResponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder builderForValue) {
        if (segmentCountResponseBuilder_ == null) {
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.set(index, builderForValue.build());
          onChanged();
        } else {
          segmentCountResponseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder addSegmentCountResponse(org.lumongo.cluster.message.Lumongo.SegmentCountResponse value) {
        if (segmentCountResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.add(value);
          onChanged();
        } else {
          segmentCountResponseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder addSegmentCountResponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentCountResponse value) {
        if (segmentCountResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.add(index, value);
          onChanged();
        } else {
          segmentCountResponseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder addSegmentCountResponse(
          org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder builderForValue) {
        if (segmentCountResponseBuilder_ == null) {
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.add(builderForValue.build());
          onChanged();
        } else {
          segmentCountResponseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder addSegmentCountResponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder builderForValue) {
        if (segmentCountResponseBuilder_ == null) {
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.add(index, builderForValue.build());
          onChanged();
        } else {
          segmentCountResponseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder addAllSegmentCountResponse(
          java.lang.Iterable values) {
        if (segmentCountResponseBuilder_ == null) {
          ensureSegmentCountResponseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, segmentCountResponse_);
          onChanged();
        } else {
          segmentCountResponseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder clearSegmentCountResponse() {
        if (segmentCountResponseBuilder_ == null) {
          segmentCountResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          segmentCountResponseBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public Builder removeSegmentCountResponse(int index) {
        if (segmentCountResponseBuilder_ == null) {
          ensureSegmentCountResponseIsMutable();
          segmentCountResponse_.remove(index);
          onChanged();
        } else {
          segmentCountResponseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder getSegmentCountResponseBuilder(
          int index) {
        return getSegmentCountResponseFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder getSegmentCountResponseOrBuilder(
          int index) {
        if (segmentCountResponseBuilder_ == null) {
          return segmentCountResponse_.get(index);  } else {
          return segmentCountResponseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public java.util.List 
           getSegmentCountResponseOrBuilderList() {
        if (segmentCountResponseBuilder_ != null) {
          return segmentCountResponseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(segmentCountResponse_);
        }
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder addSegmentCountResponseBuilder() {
        return getSegmentCountResponseFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.SegmentCountResponse.getDefaultInstance());
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder addSegmentCountResponseBuilder(
          int index) {
        return getSegmentCountResponseFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.getDefaultInstance());
      }
      /**
       * repeated .SegmentCountResponse segmentCountResponse = 2;
       */
      public java.util.List 
           getSegmentCountResponseBuilderList() {
        return getSegmentCountResponseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentCountResponse, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder> 
          getSegmentCountResponseFieldBuilder() {
        if (segmentCountResponseBuilder_ == null) {
          segmentCountResponseBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.SegmentCountResponse, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder>(
                  segmentCountResponse_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          segmentCountResponse_ = null;
        }
        return segmentCountResponseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GetNumberOfDocsResponse)
    }

    static {
      defaultInstance = new GetNumberOfDocsResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GetNumberOfDocsResponse)
  }

  public interface SegmentCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SegmentCountResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required uint32 segmentNumber = 1;
     */
    boolean hasSegmentNumber();
    /**
     * required uint32 segmentNumber = 1;
     */
    int getSegmentNumber();

    /**
     * required uint32 numberOfDocs = 2;
     */
    boolean hasNumberOfDocs();
    /**
     * required uint32 numberOfDocs = 2;
     */
    int getNumberOfDocs();
  }
  /**
   * Protobuf type {@code SegmentCountResponse}
   */
  public static final class SegmentCountResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:SegmentCountResponse)
      SegmentCountResponseOrBuilder {
    // Use SegmentCountResponse.newBuilder() to construct.
    private SegmentCountResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SegmentCountResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SegmentCountResponse defaultInstance;
    public static SegmentCountResponse getDefaultInstance() {
      return defaultInstance;
    }

    public SegmentCountResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SegmentCountResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              segmentNumber_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              numberOfDocs_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentCountResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.SegmentCountResponse.class, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public SegmentCountResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SegmentCountResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SEGMENTNUMBER_FIELD_NUMBER = 1;
    private int segmentNumber_;
    /**
     * required uint32 segmentNumber = 1;
     */
    public boolean hasSegmentNumber() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required uint32 segmentNumber = 1;
     */
    public int getSegmentNumber() {
      return segmentNumber_;
    }

    public static final int NUMBEROFDOCS_FIELD_NUMBER = 2;
    private int numberOfDocs_;
    /**
     * required uint32 numberOfDocs = 2;
     */
    public boolean hasNumberOfDocs() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint32 numberOfDocs = 2;
     */
    public int getNumberOfDocs() {
      return numberOfDocs_;
    }

    private void initFields() {
      segmentNumber_ = 0;
      numberOfDocs_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSegmentNumber()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumberOfDocs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, numberOfDocs_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, numberOfDocs_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.SegmentCountResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SegmentCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:SegmentCountResponse)
        org.lumongo.cluster.message.Lumongo.SegmentCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentCountResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.SegmentCountResponse.class, org.lumongo.cluster.message.Lumongo.SegmentCountResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.SegmentCountResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        segmentNumber_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        numberOfDocs_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentCountResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.SegmentCountResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse build() {
        org.lumongo.cluster.message.Lumongo.SegmentCountResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentCountResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.SegmentCountResponse result = new org.lumongo.cluster.message.Lumongo.SegmentCountResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.segmentNumber_ = segmentNumber_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.numberOfDocs_ = numberOfDocs_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.SegmentCountResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.SegmentCountResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.SegmentCountResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.SegmentCountResponse.getDefaultInstance()) return this;
        if (other.hasSegmentNumber()) {
          setSegmentNumber(other.getSegmentNumber());
        }
        if (other.hasNumberOfDocs()) {
          setNumberOfDocs(other.getNumberOfDocs());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSegmentNumber()) {
          
          return false;
        }
        if (!hasNumberOfDocs()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.SegmentCountResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.SegmentCountResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int segmentNumber_ ;
      /**
       * required uint32 segmentNumber = 1;
       */
      public boolean hasSegmentNumber() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public int getSegmentNumber() {
        return segmentNumber_;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder setSegmentNumber(int value) {
        bitField0_ |= 0x00000001;
        segmentNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder clearSegmentNumber() {
        bitField0_ = (bitField0_ & ~0x00000001);
        segmentNumber_ = 0;
        onChanged();
        return this;
      }

      private int numberOfDocs_ ;
      /**
       * required uint32 numberOfDocs = 2;
       */
      public boolean hasNumberOfDocs() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required uint32 numberOfDocs = 2;
       */
      public int getNumberOfDocs() {
        return numberOfDocs_;
      }
      /**
       * required uint32 numberOfDocs = 2;
       */
      public Builder setNumberOfDocs(int value) {
        bitField0_ |= 0x00000002;
        numberOfDocs_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 numberOfDocs = 2;
       */
      public Builder clearNumberOfDocs() {
        bitField0_ = (bitField0_ & ~0x00000002);
        numberOfDocs_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SegmentCountResponse)
    }

    static {
      defaultInstance = new SegmentCountResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SegmentCountResponse)
  }

  public interface IndexCreateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexCreateRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required string uniqueIdField = 2;
     */
    boolean hasUniqueIdField();
    /**
     * required string uniqueIdField = 2;
     */
    java.lang.String getUniqueIdField();
    /**
     * required string uniqueIdField = 2;
     */
    com.google.protobuf.ByteString
        getUniqueIdFieldBytes();

    /**
     * required uint32 numberOfSegments = 3;
     */
    boolean hasNumberOfSegments();
    /**
     * required uint32 numberOfSegments = 3;
     */
    int getNumberOfSegments();

    /**
     * required .IndexSettings indexSettings = 4;
     */
    boolean hasIndexSettings();
    /**
     * required .IndexSettings indexSettings = 4;
     */
    org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings();
    /**
     * required .IndexSettings indexSettings = 4;
     */
    org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder();
  }
  /**
   * Protobuf type {@code IndexCreateRequest}
   */
  public static final class IndexCreateRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexCreateRequest)
      IndexCreateRequestOrBuilder {
    // Use IndexCreateRequest.newBuilder() to construct.
    private IndexCreateRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexCreateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexCreateRequest defaultInstance;
    public static IndexCreateRequest getDefaultInstance() {
      return defaultInstance;
    }

    public IndexCreateRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexCreateRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              uniqueIdField_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              numberOfSegments_ = input.readUInt32();
              break;
            }
            case 34: {
              org.lumongo.cluster.message.Lumongo.IndexSettings.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = indexSettings_.toBuilder();
              }
              indexSettings_ = input.readMessage(org.lumongo.cluster.message.Lumongo.IndexSettings.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexSettings_);
                indexSettings_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexCreateRequest.class, org.lumongo.cluster.message.Lumongo.IndexCreateRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexCreateRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexCreateRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UNIQUEIDFIELD_FIELD_NUMBER = 2;
    private java.lang.Object uniqueIdField_;
    /**
     * required string uniqueIdField = 2;
     */
    public boolean hasUniqueIdField() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string uniqueIdField = 2;
     */
    public java.lang.String getUniqueIdField() {
      java.lang.Object ref = uniqueIdField_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueIdField_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueIdField = 2;
     */
    public com.google.protobuf.ByteString
        getUniqueIdFieldBytes() {
      java.lang.Object ref = uniqueIdField_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueIdField_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMBEROFSEGMENTS_FIELD_NUMBER = 3;
    private int numberOfSegments_;
    /**
     * required uint32 numberOfSegments = 3;
     */
    public boolean hasNumberOfSegments() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * required uint32 numberOfSegments = 3;
     */
    public int getNumberOfSegments() {
      return numberOfSegments_;
    }

    public static final int INDEXSETTINGS_FIELD_NUMBER = 4;
    private org.lumongo.cluster.message.Lumongo.IndexSettings indexSettings_;
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public boolean hasIndexSettings() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings() {
      return indexSettings_;
    }
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder() {
      return indexSettings_;
    }

    private void initFields() {
      indexName_ = "";
      uniqueIdField_ = "";
      numberOfSegments_ = 0;
      indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUniqueIdField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumberOfSegments()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexSettings()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIndexSettings().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getUniqueIdFieldBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, numberOfSegments_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, indexSettings_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getUniqueIdFieldBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, numberOfSegments_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, indexSettings_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexCreateRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexCreateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexCreateRequest)
        org.lumongo.cluster.message.Lumongo.IndexCreateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexCreateRequest.class, org.lumongo.cluster.message.Lumongo.IndexCreateRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexCreateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexSettingsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueIdField_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        numberOfSegments_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
        } else {
          indexSettingsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexCreateRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateRequest build() {
        org.lumongo.cluster.message.Lumongo.IndexCreateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexCreateRequest result = new org.lumongo.cluster.message.Lumongo.IndexCreateRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.uniqueIdField_ = uniqueIdField_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.numberOfSegments_ = numberOfSegments_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (indexSettingsBuilder_ == null) {
          result.indexSettings_ = indexSettings_;
        } else {
          result.indexSettings_ = indexSettingsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexCreateRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexCreateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexCreateRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexCreateRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasUniqueIdField()) {
          bitField0_ |= 0x00000002;
          uniqueIdField_ = other.uniqueIdField_;
          onChanged();
        }
        if (other.hasNumberOfSegments()) {
          setNumberOfSegments(other.getNumberOfSegments());
        }
        if (other.hasIndexSettings()) {
          mergeIndexSettings(other.getIndexSettings());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasUniqueIdField()) {
          
          return false;
        }
        if (!hasNumberOfSegments()) {
          
          return false;
        }
        if (!hasIndexSettings()) {
          
          return false;
        }
        if (!getIndexSettings().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexCreateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexCreateRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object uniqueIdField_ = "";
      /**
       * required string uniqueIdField = 2;
       */
      public boolean hasUniqueIdField() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string uniqueIdField = 2;
       */
      public java.lang.String getUniqueIdField() {
        java.lang.Object ref = uniqueIdField_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueIdField_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueIdField = 2;
       */
      public com.google.protobuf.ByteString
          getUniqueIdFieldBytes() {
        java.lang.Object ref = uniqueIdField_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueIdField_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueIdField = 2;
       */
      public Builder setUniqueIdField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        uniqueIdField_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueIdField = 2;
       */
      public Builder clearUniqueIdField() {
        bitField0_ = (bitField0_ & ~0x00000002);
        uniqueIdField_ = getDefaultInstance().getUniqueIdField();
        onChanged();
        return this;
      }
      /**
       * required string uniqueIdField = 2;
       */
      public Builder setUniqueIdFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        uniqueIdField_ = value;
        onChanged();
        return this;
      }

      private int numberOfSegments_ ;
      /**
       * required uint32 numberOfSegments = 3;
       */
      public boolean hasNumberOfSegments() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required uint32 numberOfSegments = 3;
       */
      public int getNumberOfSegments() {
        return numberOfSegments_;
      }
      /**
       * required uint32 numberOfSegments = 3;
       */
      public Builder setNumberOfSegments(int value) {
        bitField0_ |= 0x00000004;
        numberOfSegments_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 numberOfSegments = 3;
       */
      public Builder clearNumberOfSegments() {
        bitField0_ = (bitField0_ & ~0x00000004);
        numberOfSegments_ = 0;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.IndexSettings indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder> indexSettingsBuilder_;
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public boolean hasIndexSettings() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings() {
        if (indexSettingsBuilder_ == null) {
          return indexSettings_;
        } else {
          return indexSettingsBuilder_.getMessage();
        }
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder setIndexSettings(org.lumongo.cluster.message.Lumongo.IndexSettings value) {
        if (indexSettingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexSettings_ = value;
          onChanged();
        } else {
          indexSettingsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder setIndexSettings(
          org.lumongo.cluster.message.Lumongo.IndexSettings.Builder builderForValue) {
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = builderForValue.build();
          onChanged();
        } else {
          indexSettingsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder mergeIndexSettings(org.lumongo.cluster.message.Lumongo.IndexSettings value) {
        if (indexSettingsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              indexSettings_ != org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance()) {
            indexSettings_ =
              org.lumongo.cluster.message.Lumongo.IndexSettings.newBuilder(indexSettings_).mergeFrom(value).buildPartial();
          } else {
            indexSettings_ = value;
          }
          onChanged();
        } else {
          indexSettingsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder clearIndexSettings() {
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
          onChanged();
        } else {
          indexSettingsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettings.Builder getIndexSettingsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getIndexSettingsFieldBuilder().getBuilder();
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder() {
        if (indexSettingsBuilder_ != null) {
          return indexSettingsBuilder_.getMessageOrBuilder();
        } else {
          return indexSettings_;
        }
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder> 
          getIndexSettingsFieldBuilder() {
        if (indexSettingsBuilder_ == null) {
          indexSettingsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder>(
                  getIndexSettings(),
                  getParentForChildren(),
                  isClean());
          indexSettings_ = null;
        }
        return indexSettingsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:IndexCreateRequest)
    }

    static {
      defaultInstance = new IndexCreateRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexCreateRequest)
  }

  public interface IndexCreateResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexCreateResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code IndexCreateResponse}
   */
  public static final class IndexCreateResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexCreateResponse)
      IndexCreateResponseOrBuilder {
    // Use IndexCreateResponse.newBuilder() to construct.
    private IndexCreateResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexCreateResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexCreateResponse defaultInstance;
    public static IndexCreateResponse getDefaultInstance() {
      return defaultInstance;
    }

    public IndexCreateResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexCreateResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexCreateResponse.class, org.lumongo.cluster.message.Lumongo.IndexCreateResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexCreateResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexCreateResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexCreateResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexCreateResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexCreateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexCreateResponse)
        org.lumongo.cluster.message.Lumongo.IndexCreateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexCreateResponse.class, org.lumongo.cluster.message.Lumongo.IndexCreateResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexCreateResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexCreateResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateResponse build() {
        org.lumongo.cluster.message.Lumongo.IndexCreateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexCreateResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexCreateResponse result = new org.lumongo.cluster.message.Lumongo.IndexCreateResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexCreateResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexCreateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexCreateResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexCreateResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexCreateResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexCreateResponse)
    }

    static {
      defaultInstance = new IndexCreateResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexCreateResponse)
  }

  public interface IndexSettingsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexSettingsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required .IndexSettings indexSettings = 4;
     */
    boolean hasIndexSettings();
    /**
     * required .IndexSettings indexSettings = 4;
     */
    org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings();
    /**
     * required .IndexSettings indexSettings = 4;
     */
    org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder();
  }
  /**
   * Protobuf type {@code IndexSettingsRequest}
   */
  public static final class IndexSettingsRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexSettingsRequest)
      IndexSettingsRequestOrBuilder {
    // Use IndexSettingsRequest.newBuilder() to construct.
    private IndexSettingsRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexSettingsRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexSettingsRequest defaultInstance;
    public static IndexSettingsRequest getDefaultInstance() {
      return defaultInstance;
    }

    public IndexSettingsRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexSettingsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 34: {
              org.lumongo.cluster.message.Lumongo.IndexSettings.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = indexSettings_.toBuilder();
              }
              indexSettings_ = input.readMessage(org.lumongo.cluster.message.Lumongo.IndexSettings.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexSettings_);
                indexSettings_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.class, org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexSettingsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexSettingsRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXSETTINGS_FIELD_NUMBER = 4;
    private org.lumongo.cluster.message.Lumongo.IndexSettings indexSettings_;
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public boolean hasIndexSettings() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings() {
      return indexSettings_;
    }
    /**
     * required .IndexSettings indexSettings = 4;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder() {
      return indexSettings_;
    }

    private void initFields() {
      indexName_ = "";
      indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexSettings()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIndexSettings().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, indexSettings_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, indexSettings_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexSettingsRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexSettingsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexSettingsRequest)
        org.lumongo.cluster.message.Lumongo.IndexSettingsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.class, org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexSettingsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
        } else {
          indexSettingsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsRequest build() {
        org.lumongo.cluster.message.Lumongo.IndexSettingsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexSettingsRequest result = new org.lumongo.cluster.message.Lumongo.IndexSettingsRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (indexSettingsBuilder_ == null) {
          result.indexSettings_ = indexSettings_;
        } else {
          result.indexSettings_ = indexSettingsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexSettingsRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexSettingsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexSettingsRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasIndexSettings()) {
          mergeIndexSettings(other.getIndexSettings());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasIndexSettings()) {
          
          return false;
        }
        if (!getIndexSettings().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexSettingsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexSettingsRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.IndexSettings indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder> indexSettingsBuilder_;
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public boolean hasIndexSettings() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettings getIndexSettings() {
        if (indexSettingsBuilder_ == null) {
          return indexSettings_;
        } else {
          return indexSettingsBuilder_.getMessage();
        }
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder setIndexSettings(org.lumongo.cluster.message.Lumongo.IndexSettings value) {
        if (indexSettingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexSettings_ = value;
          onChanged();
        } else {
          indexSettingsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder setIndexSettings(
          org.lumongo.cluster.message.Lumongo.IndexSettings.Builder builderForValue) {
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = builderForValue.build();
          onChanged();
        } else {
          indexSettingsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder mergeIndexSettings(org.lumongo.cluster.message.Lumongo.IndexSettings value) {
        if (indexSettingsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              indexSettings_ != org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance()) {
            indexSettings_ =
              org.lumongo.cluster.message.Lumongo.IndexSettings.newBuilder(indexSettings_).mergeFrom(value).buildPartial();
          } else {
            indexSettings_ = value;
          }
          onChanged();
        } else {
          indexSettingsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public Builder clearIndexSettings() {
        if (indexSettingsBuilder_ == null) {
          indexSettings_ = org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
          onChanged();
        } else {
          indexSettingsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettings.Builder getIndexSettingsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIndexSettingsFieldBuilder().getBuilder();
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder getIndexSettingsOrBuilder() {
        if (indexSettingsBuilder_ != null) {
          return indexSettingsBuilder_.getMessageOrBuilder();
        } else {
          return indexSettings_;
        }
      }
      /**
       * required .IndexSettings indexSettings = 4;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder> 
          getIndexSettingsFieldBuilder() {
        if (indexSettingsBuilder_ == null) {
          indexSettingsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.IndexSettings, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder, org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder>(
                  getIndexSettings(),
                  getParentForChildren(),
                  isClean());
          indexSettings_ = null;
        }
        return indexSettingsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:IndexSettingsRequest)
    }

    static {
      defaultInstance = new IndexSettingsRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexSettingsRequest)
  }

  public interface IndexSettingsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexSettings)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string defaultSearchField = 1;
     */
    boolean hasDefaultSearchField();
    /**
     * required string defaultSearchField = 1;
     */
    java.lang.String getDefaultSearchField();
    /**
     * required string defaultSearchField = 1;
     */
    com.google.protobuf.ByteString
        getDefaultSearchFieldBytes();

    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    java.util.List 
        getFieldConfigList();
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    org.lumongo.cluster.message.Lumongo.FieldConfig getFieldConfig(int index);
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    int getFieldConfigCount();
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    java.util.List 
        getFieldConfigOrBuilderList();
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder getFieldConfigOrBuilder(
        int index);

    /**
     * optional bool applyUncommittedDeletes = 3 [default = true];
     */
    boolean hasApplyUncommittedDeletes();
    /**
     * optional bool applyUncommittedDeletes = 3 [default = true];
     */
    boolean getApplyUncommittedDeletes();

    /**
     * optional double requestFactor = 4 [default = 2];
     */
    boolean hasRequestFactor();
    /**
     * optional double requestFactor = 4 [default = 2];
     */
    double getRequestFactor();

    /**
     * optional uint32 minSegmentRequest = 5 [default = 2];
     */
    boolean hasMinSegmentRequest();
    /**
     * optional uint32 minSegmentRequest = 5 [default = 2];
     */
    int getMinSegmentRequest();

    /**
     * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
     */
    boolean hasIdleTimeWithoutCommit();
    /**
     * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
     */
    int getIdleTimeWithoutCommit();

    /**
     * optional uint32 segmentCommitInterval = 7 [default = 3200];
     */
    boolean hasSegmentCommitInterval();
    /**
     * optional uint32 segmentCommitInterval = 7 [default = 3200];
     */
    int getSegmentCommitInterval();

    /**
     * optional double segmentTolerance = 9 [default = 0.05];
     */
    boolean hasSegmentTolerance();
    /**
     * optional double segmentTolerance = 9 [default = 0.05];
     */
    double getSegmentTolerance();

    /**
     * optional uint32 segmentQueryCacheSize = 11 [default = 512];
     */
    boolean hasSegmentQueryCacheSize();
    /**
     * optional uint32 segmentQueryCacheSize = 11 [default = 512];
     */
    int getSegmentQueryCacheSize();

    /**
     * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
     */
    boolean hasSegmentQueryCacheMaxAmount();
    /**
     * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
     */
    int getSegmentQueryCacheMaxAmount();

    /**
     * optional bool storeDocumentInIndex = 13 [default = false];
     */
    boolean hasStoreDocumentInIndex();
    /**
     * optional bool storeDocumentInIndex = 13 [default = false];
     */
    boolean getStoreDocumentInIndex();

    /**
     * optional bool storeDocumentInMongo = 14 [default = true];
     */
    boolean hasStoreDocumentInMongo();
    /**
     * optional bool storeDocumentInMongo = 14 [default = true];
     */
    boolean getStoreDocumentInMongo();
  }
  /**
   * Protobuf type {@code IndexSettings}
   */
  public static final class IndexSettings extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexSettings)
      IndexSettingsOrBuilder {
    // Use IndexSettings.newBuilder() to construct.
    private IndexSettings(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexSettings(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexSettings defaultInstance;
    public static IndexSettings getDefaultInstance() {
      return defaultInstance;
    }

    public IndexSettings getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexSettings(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              defaultSearchField_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                fieldConfig_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              fieldConfig_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FieldConfig.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              applyUncommittedDeletes_ = input.readBool();
              break;
            }
            case 33: {
              bitField0_ |= 0x00000004;
              requestFactor_ = input.readDouble();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              minSegmentRequest_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              idleTimeWithoutCommit_ = input.readUInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              segmentCommitInterval_ = input.readUInt32();
              break;
            }
            case 73: {
              bitField0_ |= 0x00000040;
              segmentTolerance_ = input.readDouble();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000080;
              segmentQueryCacheSize_ = input.readUInt32();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000100;
              segmentQueryCacheMaxAmount_ = input.readUInt32();
              break;
            }
            case 104: {
              bitField0_ |= 0x00000200;
              storeDocumentInIndex_ = input.readBool();
              break;
            }
            case 112: {
              bitField0_ |= 0x00000400;
              storeDocumentInMongo_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          fieldConfig_ = java.util.Collections.unmodifiableList(fieldConfig_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettings_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettings_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexSettings.class, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexSettings parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexSettings(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int DEFAULTSEARCHFIELD_FIELD_NUMBER = 1;
    private java.lang.Object defaultSearchField_;
    /**
     * required string defaultSearchField = 1;
     */
    public boolean hasDefaultSearchField() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string defaultSearchField = 1;
     */
    public java.lang.String getDefaultSearchField() {
      java.lang.Object ref = defaultSearchField_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          defaultSearchField_ = s;
        }
        return s;
      }
    }
    /**
     * required string defaultSearchField = 1;
     */
    public com.google.protobuf.ByteString
        getDefaultSearchFieldBytes() {
      java.lang.Object ref = defaultSearchField_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        defaultSearchField_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDCONFIG_FIELD_NUMBER = 2;
    private java.util.List fieldConfig_;
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    public java.util.List getFieldConfigList() {
      return fieldConfig_;
    }
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    public java.util.List 
        getFieldConfigOrBuilderList() {
      return fieldConfig_;
    }
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    public int getFieldConfigCount() {
      return fieldConfig_.size();
    }
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    public org.lumongo.cluster.message.Lumongo.FieldConfig getFieldConfig(int index) {
      return fieldConfig_.get(index);
    }
    /**
     * repeated .FieldConfig fieldConfig = 2;
     */
    public org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder getFieldConfigOrBuilder(
        int index) {
      return fieldConfig_.get(index);
    }

    public static final int APPLYUNCOMMITTEDDELETES_FIELD_NUMBER = 3;
    private boolean applyUncommittedDeletes_;
    /**
     * optional bool applyUncommittedDeletes = 3 [default = true];
     */
    public boolean hasApplyUncommittedDeletes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional bool applyUncommittedDeletes = 3 [default = true];
     */
    public boolean getApplyUncommittedDeletes() {
      return applyUncommittedDeletes_;
    }

    public static final int REQUESTFACTOR_FIELD_NUMBER = 4;
    private double requestFactor_;
    /**
     * optional double requestFactor = 4 [default = 2];
     */
    public boolean hasRequestFactor() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional double requestFactor = 4 [default = 2];
     */
    public double getRequestFactor() {
      return requestFactor_;
    }

    public static final int MINSEGMENTREQUEST_FIELD_NUMBER = 5;
    private int minSegmentRequest_;
    /**
     * optional uint32 minSegmentRequest = 5 [default = 2];
     */
    public boolean hasMinSegmentRequest() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 minSegmentRequest = 5 [default = 2];
     */
    public int getMinSegmentRequest() {
      return minSegmentRequest_;
    }

    public static final int IDLETIMEWITHOUTCOMMIT_FIELD_NUMBER = 6;
    private int idleTimeWithoutCommit_;
    /**
     * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
     */
    public boolean hasIdleTimeWithoutCommit() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
     */
    public int getIdleTimeWithoutCommit() {
      return idleTimeWithoutCommit_;
    }

    public static final int SEGMENTCOMMITINTERVAL_FIELD_NUMBER = 7;
    private int segmentCommitInterval_;
    /**
     * optional uint32 segmentCommitInterval = 7 [default = 3200];
     */
    public boolean hasSegmentCommitInterval() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional uint32 segmentCommitInterval = 7 [default = 3200];
     */
    public int getSegmentCommitInterval() {
      return segmentCommitInterval_;
    }

    public static final int SEGMENTTOLERANCE_FIELD_NUMBER = 9;
    private double segmentTolerance_;
    /**
     * optional double segmentTolerance = 9 [default = 0.05];
     */
    public boolean hasSegmentTolerance() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional double segmentTolerance = 9 [default = 0.05];
     */
    public double getSegmentTolerance() {
      return segmentTolerance_;
    }

    public static final int SEGMENTQUERYCACHESIZE_FIELD_NUMBER = 11;
    private int segmentQueryCacheSize_;
    /**
     * optional uint32 segmentQueryCacheSize = 11 [default = 512];
     */
    public boolean hasSegmentQueryCacheSize() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional uint32 segmentQueryCacheSize = 11 [default = 512];
     */
    public int getSegmentQueryCacheSize() {
      return segmentQueryCacheSize_;
    }

    public static final int SEGMENTQUERYCACHEMAXAMOUNT_FIELD_NUMBER = 12;
    private int segmentQueryCacheMaxAmount_;
    /**
     * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
     */
    public boolean hasSegmentQueryCacheMaxAmount() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
     */
    public int getSegmentQueryCacheMaxAmount() {
      return segmentQueryCacheMaxAmount_;
    }

    public static final int STOREDOCUMENTININDEX_FIELD_NUMBER = 13;
    private boolean storeDocumentInIndex_;
    /**
     * optional bool storeDocumentInIndex = 13 [default = false];
     */
    public boolean hasStoreDocumentInIndex() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * optional bool storeDocumentInIndex = 13 [default = false];
     */
    public boolean getStoreDocumentInIndex() {
      return storeDocumentInIndex_;
    }

    public static final int STOREDOCUMENTINMONGO_FIELD_NUMBER = 14;
    private boolean storeDocumentInMongo_;
    /**
     * optional bool storeDocumentInMongo = 14 [default = true];
     */
    public boolean hasStoreDocumentInMongo() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * optional bool storeDocumentInMongo = 14 [default = true];
     */
    public boolean getStoreDocumentInMongo() {
      return storeDocumentInMongo_;
    }

    private void initFields() {
      defaultSearchField_ = "";
      fieldConfig_ = java.util.Collections.emptyList();
      applyUncommittedDeletes_ = true;
      requestFactor_ = 2D;
      minSegmentRequest_ = 2;
      idleTimeWithoutCommit_ = 30;
      segmentCommitInterval_ = 3200;
      segmentTolerance_ = 0.05D;
      segmentQueryCacheSize_ = 512;
      segmentQueryCacheMaxAmount_ = 256;
      storeDocumentInIndex_ = false;
      storeDocumentInMongo_ = true;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasDefaultSearchField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFieldConfigCount(); i++) {
        if (!getFieldConfig(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getDefaultSearchFieldBytes());
      }
      for (int i = 0; i < fieldConfig_.size(); i++) {
        output.writeMessage(2, fieldConfig_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, applyUncommittedDeletes_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeDouble(4, requestFactor_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(5, minSegmentRequest_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(6, idleTimeWithoutCommit_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt32(7, segmentCommitInterval_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeDouble(9, segmentTolerance_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(11, segmentQueryCacheSize_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeUInt32(12, segmentQueryCacheMaxAmount_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(13, storeDocumentInIndex_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeBool(14, storeDocumentInMongo_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getDefaultSearchFieldBytes());
      }
      for (int i = 0; i < fieldConfig_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, fieldConfig_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, applyUncommittedDeletes_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, requestFactor_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, minSegmentRequest_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, idleTimeWithoutCommit_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, segmentCommitInterval_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(9, segmentTolerance_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, segmentQueryCacheSize_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(12, segmentQueryCacheMaxAmount_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, storeDocumentInIndex_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, storeDocumentInMongo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettings parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexSettings prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexSettings}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexSettings)
        org.lumongo.cluster.message.Lumongo.IndexSettingsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettings_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettings_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexSettings.class, org.lumongo.cluster.message.Lumongo.IndexSettings.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexSettings.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFieldConfigFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        defaultSearchField_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (fieldConfigBuilder_ == null) {
          fieldConfig_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          fieldConfigBuilder_.clear();
        }
        applyUncommittedDeletes_ = true;
        bitField0_ = (bitField0_ & ~0x00000004);
        requestFactor_ = 2D;
        bitField0_ = (bitField0_ & ~0x00000008);
        minSegmentRequest_ = 2;
        bitField0_ = (bitField0_ & ~0x00000010);
        idleTimeWithoutCommit_ = 30;
        bitField0_ = (bitField0_ & ~0x00000020);
        segmentCommitInterval_ = 3200;
        bitField0_ = (bitField0_ & ~0x00000040);
        segmentTolerance_ = 0.05D;
        bitField0_ = (bitField0_ & ~0x00000080);
        segmentQueryCacheSize_ = 512;
        bitField0_ = (bitField0_ & ~0x00000100);
        segmentQueryCacheMaxAmount_ = 256;
        bitField0_ = (bitField0_ & ~0x00000200);
        storeDocumentInIndex_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        storeDocumentInMongo_ = true;
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettings_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettings getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettings build() {
        org.lumongo.cluster.message.Lumongo.IndexSettings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettings buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexSettings result = new org.lumongo.cluster.message.Lumongo.IndexSettings(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.defaultSearchField_ = defaultSearchField_;
        if (fieldConfigBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            fieldConfig_ = java.util.Collections.unmodifiableList(fieldConfig_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fieldConfig_ = fieldConfig_;
        } else {
          result.fieldConfig_ = fieldConfigBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.applyUncommittedDeletes_ = applyUncommittedDeletes_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.requestFactor_ = requestFactor_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.minSegmentRequest_ = minSegmentRequest_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.idleTimeWithoutCommit_ = idleTimeWithoutCommit_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.segmentCommitInterval_ = segmentCommitInterval_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.segmentTolerance_ = segmentTolerance_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000080;
        }
        result.segmentQueryCacheSize_ = segmentQueryCacheSize_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000100;
        }
        result.segmentQueryCacheMaxAmount_ = segmentQueryCacheMaxAmount_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000200;
        }
        result.storeDocumentInIndex_ = storeDocumentInIndex_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000400;
        }
        result.storeDocumentInMongo_ = storeDocumentInMongo_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexSettings) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexSettings)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexSettings other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexSettings.getDefaultInstance()) return this;
        if (other.hasDefaultSearchField()) {
          bitField0_ |= 0x00000001;
          defaultSearchField_ = other.defaultSearchField_;
          onChanged();
        }
        if (fieldConfigBuilder_ == null) {
          if (!other.fieldConfig_.isEmpty()) {
            if (fieldConfig_.isEmpty()) {
              fieldConfig_ = other.fieldConfig_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFieldConfigIsMutable();
              fieldConfig_.addAll(other.fieldConfig_);
            }
            onChanged();
          }
        } else {
          if (!other.fieldConfig_.isEmpty()) {
            if (fieldConfigBuilder_.isEmpty()) {
              fieldConfigBuilder_.dispose();
              fieldConfigBuilder_ = null;
              fieldConfig_ = other.fieldConfig_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fieldConfigBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFieldConfigFieldBuilder() : null;
            } else {
              fieldConfigBuilder_.addAllMessages(other.fieldConfig_);
            }
          }
        }
        if (other.hasApplyUncommittedDeletes()) {
          setApplyUncommittedDeletes(other.getApplyUncommittedDeletes());
        }
        if (other.hasRequestFactor()) {
          setRequestFactor(other.getRequestFactor());
        }
        if (other.hasMinSegmentRequest()) {
          setMinSegmentRequest(other.getMinSegmentRequest());
        }
        if (other.hasIdleTimeWithoutCommit()) {
          setIdleTimeWithoutCommit(other.getIdleTimeWithoutCommit());
        }
        if (other.hasSegmentCommitInterval()) {
          setSegmentCommitInterval(other.getSegmentCommitInterval());
        }
        if (other.hasSegmentTolerance()) {
          setSegmentTolerance(other.getSegmentTolerance());
        }
        if (other.hasSegmentQueryCacheSize()) {
          setSegmentQueryCacheSize(other.getSegmentQueryCacheSize());
        }
        if (other.hasSegmentQueryCacheMaxAmount()) {
          setSegmentQueryCacheMaxAmount(other.getSegmentQueryCacheMaxAmount());
        }
        if (other.hasStoreDocumentInIndex()) {
          setStoreDocumentInIndex(other.getStoreDocumentInIndex());
        }
        if (other.hasStoreDocumentInMongo()) {
          setStoreDocumentInMongo(other.getStoreDocumentInMongo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasDefaultSearchField()) {
          
          return false;
        }
        for (int i = 0; i < getFieldConfigCount(); i++) {
          if (!getFieldConfig(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexSettings parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexSettings) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object defaultSearchField_ = "";
      /**
       * required string defaultSearchField = 1;
       */
      public boolean hasDefaultSearchField() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string defaultSearchField = 1;
       */
      public java.lang.String getDefaultSearchField() {
        java.lang.Object ref = defaultSearchField_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            defaultSearchField_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string defaultSearchField = 1;
       */
      public com.google.protobuf.ByteString
          getDefaultSearchFieldBytes() {
        java.lang.Object ref = defaultSearchField_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          defaultSearchField_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string defaultSearchField = 1;
       */
      public Builder setDefaultSearchField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        defaultSearchField_ = value;
        onChanged();
        return this;
      }
      /**
       * required string defaultSearchField = 1;
       */
      public Builder clearDefaultSearchField() {
        bitField0_ = (bitField0_ & ~0x00000001);
        defaultSearchField_ = getDefaultInstance().getDefaultSearchField();
        onChanged();
        return this;
      }
      /**
       * required string defaultSearchField = 1;
       */
      public Builder setDefaultSearchFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        defaultSearchField_ = value;
        onChanged();
        return this;
      }

      private java.util.List fieldConfig_ =
        java.util.Collections.emptyList();
      private void ensureFieldConfigIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          fieldConfig_ = new java.util.ArrayList(fieldConfig_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FieldConfig, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder, org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder> fieldConfigBuilder_;

      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public java.util.List getFieldConfigList() {
        if (fieldConfigBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fieldConfig_);
        } else {
          return fieldConfigBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public int getFieldConfigCount() {
        if (fieldConfigBuilder_ == null) {
          return fieldConfig_.size();
        } else {
          return fieldConfigBuilder_.getCount();
        }
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FieldConfig getFieldConfig(int index) {
        if (fieldConfigBuilder_ == null) {
          return fieldConfig_.get(index);
        } else {
          return fieldConfigBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder setFieldConfig(
          int index, org.lumongo.cluster.message.Lumongo.FieldConfig value) {
        if (fieldConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldConfigIsMutable();
          fieldConfig_.set(index, value);
          onChanged();
        } else {
          fieldConfigBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder setFieldConfig(
          int index, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder builderForValue) {
        if (fieldConfigBuilder_ == null) {
          ensureFieldConfigIsMutable();
          fieldConfig_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldConfigBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder addFieldConfig(org.lumongo.cluster.message.Lumongo.FieldConfig value) {
        if (fieldConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldConfigIsMutable();
          fieldConfig_.add(value);
          onChanged();
        } else {
          fieldConfigBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder addFieldConfig(
          int index, org.lumongo.cluster.message.Lumongo.FieldConfig value) {
        if (fieldConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldConfigIsMutable();
          fieldConfig_.add(index, value);
          onChanged();
        } else {
          fieldConfigBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder addFieldConfig(
          org.lumongo.cluster.message.Lumongo.FieldConfig.Builder builderForValue) {
        if (fieldConfigBuilder_ == null) {
          ensureFieldConfigIsMutable();
          fieldConfig_.add(builderForValue.build());
          onChanged();
        } else {
          fieldConfigBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder addFieldConfig(
          int index, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder builderForValue) {
        if (fieldConfigBuilder_ == null) {
          ensureFieldConfigIsMutable();
          fieldConfig_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldConfigBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder addAllFieldConfig(
          java.lang.Iterable values) {
        if (fieldConfigBuilder_ == null) {
          ensureFieldConfigIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fieldConfig_);
          onChanged();
        } else {
          fieldConfigBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder clearFieldConfig() {
        if (fieldConfigBuilder_ == null) {
          fieldConfig_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fieldConfigBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public Builder removeFieldConfig(int index) {
        if (fieldConfigBuilder_ == null) {
          ensureFieldConfigIsMutable();
          fieldConfig_.remove(index);
          onChanged();
        } else {
          fieldConfigBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FieldConfig.Builder getFieldConfigBuilder(
          int index) {
        return getFieldConfigFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder getFieldConfigOrBuilder(
          int index) {
        if (fieldConfigBuilder_ == null) {
          return fieldConfig_.get(index);  } else {
          return fieldConfigBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public java.util.List 
           getFieldConfigOrBuilderList() {
        if (fieldConfigBuilder_ != null) {
          return fieldConfigBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fieldConfig_);
        }
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FieldConfig.Builder addFieldConfigBuilder() {
        return getFieldConfigFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FieldConfig.getDefaultInstance());
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FieldConfig.Builder addFieldConfigBuilder(
          int index) {
        return getFieldConfigFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FieldConfig.getDefaultInstance());
      }
      /**
       * repeated .FieldConfig fieldConfig = 2;
       */
      public java.util.List 
           getFieldConfigBuilderList() {
        return getFieldConfigFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FieldConfig, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder, org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder> 
          getFieldConfigFieldBuilder() {
        if (fieldConfigBuilder_ == null) {
          fieldConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FieldConfig, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder, org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder>(
                  fieldConfig_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          fieldConfig_ = null;
        }
        return fieldConfigBuilder_;
      }

      private boolean applyUncommittedDeletes_ = true;
      /**
       * optional bool applyUncommittedDeletes = 3 [default = true];
       */
      public boolean hasApplyUncommittedDeletes() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional bool applyUncommittedDeletes = 3 [default = true];
       */
      public boolean getApplyUncommittedDeletes() {
        return applyUncommittedDeletes_;
      }
      /**
       * optional bool applyUncommittedDeletes = 3 [default = true];
       */
      public Builder setApplyUncommittedDeletes(boolean value) {
        bitField0_ |= 0x00000004;
        applyUncommittedDeletes_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool applyUncommittedDeletes = 3 [default = true];
       */
      public Builder clearApplyUncommittedDeletes() {
        bitField0_ = (bitField0_ & ~0x00000004);
        applyUncommittedDeletes_ = true;
        onChanged();
        return this;
      }

      private double requestFactor_ = 2D;
      /**
       * optional double requestFactor = 4 [default = 2];
       */
      public boolean hasRequestFactor() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional double requestFactor = 4 [default = 2];
       */
      public double getRequestFactor() {
        return requestFactor_;
      }
      /**
       * optional double requestFactor = 4 [default = 2];
       */
      public Builder setRequestFactor(double value) {
        bitField0_ |= 0x00000008;
        requestFactor_ = value;
        onChanged();
        return this;
      }
      /**
       * optional double requestFactor = 4 [default = 2];
       */
      public Builder clearRequestFactor() {
        bitField0_ = (bitField0_ & ~0x00000008);
        requestFactor_ = 2D;
        onChanged();
        return this;
      }

      private int minSegmentRequest_ = 2;
      /**
       * optional uint32 minSegmentRequest = 5 [default = 2];
       */
      public boolean hasMinSegmentRequest() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 minSegmentRequest = 5 [default = 2];
       */
      public int getMinSegmentRequest() {
        return minSegmentRequest_;
      }
      /**
       * optional uint32 minSegmentRequest = 5 [default = 2];
       */
      public Builder setMinSegmentRequest(int value) {
        bitField0_ |= 0x00000010;
        minSegmentRequest_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 minSegmentRequest = 5 [default = 2];
       */
      public Builder clearMinSegmentRequest() {
        bitField0_ = (bitField0_ & ~0x00000010);
        minSegmentRequest_ = 2;
        onChanged();
        return this;
      }

      private int idleTimeWithoutCommit_ = 30;
      /**
       * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
       */
      public boolean hasIdleTimeWithoutCommit() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
       */
      public int getIdleTimeWithoutCommit() {
        return idleTimeWithoutCommit_;
      }
      /**
       * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
       */
      public Builder setIdleTimeWithoutCommit(int value) {
        bitField0_ |= 0x00000020;
        idleTimeWithoutCommit_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 idleTimeWithoutCommit = 6 [default = 30];
       */
      public Builder clearIdleTimeWithoutCommit() {
        bitField0_ = (bitField0_ & ~0x00000020);
        idleTimeWithoutCommit_ = 30;
        onChanged();
        return this;
      }

      private int segmentCommitInterval_ = 3200;
      /**
       * optional uint32 segmentCommitInterval = 7 [default = 3200];
       */
      public boolean hasSegmentCommitInterval() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional uint32 segmentCommitInterval = 7 [default = 3200];
       */
      public int getSegmentCommitInterval() {
        return segmentCommitInterval_;
      }
      /**
       * optional uint32 segmentCommitInterval = 7 [default = 3200];
       */
      public Builder setSegmentCommitInterval(int value) {
        bitField0_ |= 0x00000040;
        segmentCommitInterval_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 segmentCommitInterval = 7 [default = 3200];
       */
      public Builder clearSegmentCommitInterval() {
        bitField0_ = (bitField0_ & ~0x00000040);
        segmentCommitInterval_ = 3200;
        onChanged();
        return this;
      }

      private double segmentTolerance_ = 0.05D;
      /**
       * optional double segmentTolerance = 9 [default = 0.05];
       */
      public boolean hasSegmentTolerance() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional double segmentTolerance = 9 [default = 0.05];
       */
      public double getSegmentTolerance() {
        return segmentTolerance_;
      }
      /**
       * optional double segmentTolerance = 9 [default = 0.05];
       */
      public Builder setSegmentTolerance(double value) {
        bitField0_ |= 0x00000080;
        segmentTolerance_ = value;
        onChanged();
        return this;
      }
      /**
       * optional double segmentTolerance = 9 [default = 0.05];
       */
      public Builder clearSegmentTolerance() {
        bitField0_ = (bitField0_ & ~0x00000080);
        segmentTolerance_ = 0.05D;
        onChanged();
        return this;
      }

      private int segmentQueryCacheSize_ = 512;
      /**
       * optional uint32 segmentQueryCacheSize = 11 [default = 512];
       */
      public boolean hasSegmentQueryCacheSize() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional uint32 segmentQueryCacheSize = 11 [default = 512];
       */
      public int getSegmentQueryCacheSize() {
        return segmentQueryCacheSize_;
      }
      /**
       * optional uint32 segmentQueryCacheSize = 11 [default = 512];
       */
      public Builder setSegmentQueryCacheSize(int value) {
        bitField0_ |= 0x00000100;
        segmentQueryCacheSize_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 segmentQueryCacheSize = 11 [default = 512];
       */
      public Builder clearSegmentQueryCacheSize() {
        bitField0_ = (bitField0_ & ~0x00000100);
        segmentQueryCacheSize_ = 512;
        onChanged();
        return this;
      }

      private int segmentQueryCacheMaxAmount_ = 256;
      /**
       * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
       */
      public boolean hasSegmentQueryCacheMaxAmount() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
       */
      public int getSegmentQueryCacheMaxAmount() {
        return segmentQueryCacheMaxAmount_;
      }
      /**
       * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
       */
      public Builder setSegmentQueryCacheMaxAmount(int value) {
        bitField0_ |= 0x00000200;
        segmentQueryCacheMaxAmount_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 segmentQueryCacheMaxAmount = 12 [default = 256];
       */
      public Builder clearSegmentQueryCacheMaxAmount() {
        bitField0_ = (bitField0_ & ~0x00000200);
        segmentQueryCacheMaxAmount_ = 256;
        onChanged();
        return this;
      }

      private boolean storeDocumentInIndex_ ;
      /**
       * optional bool storeDocumentInIndex = 13 [default = false];
       */
      public boolean hasStoreDocumentInIndex() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional bool storeDocumentInIndex = 13 [default = false];
       */
      public boolean getStoreDocumentInIndex() {
        return storeDocumentInIndex_;
      }
      /**
       * optional bool storeDocumentInIndex = 13 [default = false];
       */
      public Builder setStoreDocumentInIndex(boolean value) {
        bitField0_ |= 0x00000400;
        storeDocumentInIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool storeDocumentInIndex = 13 [default = false];
       */
      public Builder clearStoreDocumentInIndex() {
        bitField0_ = (bitField0_ & ~0x00000400);
        storeDocumentInIndex_ = false;
        onChanged();
        return this;
      }

      private boolean storeDocumentInMongo_ = true;
      /**
       * optional bool storeDocumentInMongo = 14 [default = true];
       */
      public boolean hasStoreDocumentInMongo() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional bool storeDocumentInMongo = 14 [default = true];
       */
      public boolean getStoreDocumentInMongo() {
        return storeDocumentInMongo_;
      }
      /**
       * optional bool storeDocumentInMongo = 14 [default = true];
       */
      public Builder setStoreDocumentInMongo(boolean value) {
        bitField0_ |= 0x00000800;
        storeDocumentInMongo_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool storeDocumentInMongo = 14 [default = true];
       */
      public Builder clearStoreDocumentInMongo() {
        bitField0_ = (bitField0_ & ~0x00000800);
        storeDocumentInMongo_ = true;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexSettings)
    }

    static {
      defaultInstance = new IndexSettings(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexSettings)
  }

  public interface FieldConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FieldConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string storedFieldName = 1;
     */
    boolean hasStoredFieldName();
    /**
     * required string storedFieldName = 1;
     */
    java.lang.String getStoredFieldName();
    /**
     * required string storedFieldName = 1;
     */
    com.google.protobuf.ByteString
        getStoredFieldNameBytes();

    /**
     * repeated .IndexAs indexAs = 2;
     */
    java.util.List 
        getIndexAsList();
    /**
     * repeated .IndexAs indexAs = 2;
     */
    org.lumongo.cluster.message.Lumongo.IndexAs getIndexAs(int index);
    /**
     * repeated .IndexAs indexAs = 2;
     */
    int getIndexAsCount();
    /**
     * repeated .IndexAs indexAs = 2;
     */
    java.util.List 
        getIndexAsOrBuilderList();
    /**
     * repeated .IndexAs indexAs = 2;
     */
    org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder getIndexAsOrBuilder(
        int index);

    /**
     * repeated .FacetAs facetAs = 3;
     */
    java.util.List 
        getFacetAsList();
    /**
     * repeated .FacetAs facetAs = 3;
     */
    org.lumongo.cluster.message.Lumongo.FacetAs getFacetAs(int index);
    /**
     * repeated .FacetAs facetAs = 3;
     */
    int getFacetAsCount();
    /**
     * repeated .FacetAs facetAs = 3;
     */
    java.util.List 
        getFacetAsOrBuilderList();
    /**
     * repeated .FacetAs facetAs = 3;
     */
    org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder getFacetAsOrBuilder(
        int index);

    /**
     * optional .SortAs sortAs = 4;
     */
    boolean hasSortAs();
    /**
     * optional .SortAs sortAs = 4;
     */
    org.lumongo.cluster.message.Lumongo.SortAs getSortAs();
    /**
     * optional .SortAs sortAs = 4;
     */
    org.lumongo.cluster.message.Lumongo.SortAsOrBuilder getSortAsOrBuilder();
  }
  /**
   * Protobuf type {@code FieldConfig}
   */
  public static final class FieldConfig extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FieldConfig)
      FieldConfigOrBuilder {
    // Use FieldConfig.newBuilder() to construct.
    private FieldConfig(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FieldConfig(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FieldConfig defaultInstance;
    public static FieldConfig getDefaultInstance() {
      return defaultInstance;
    }

    public FieldConfig getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FieldConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              storedFieldName_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                indexAs_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              indexAs_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.IndexAs.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                facetAs_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              facetAs_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FacetAs.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              org.lumongo.cluster.message.Lumongo.SortAs.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = sortAs_.toBuilder();
              }
              sortAs_ = input.readMessage(org.lumongo.cluster.message.Lumongo.SortAs.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sortAs_);
                sortAs_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          indexAs_ = java.util.Collections.unmodifiableList(indexAs_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          facetAs_ = java.util.Collections.unmodifiableList(facetAs_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FieldConfig_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FieldConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FieldConfig.class, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FieldConfig parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FieldConfig(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int STOREDFIELDNAME_FIELD_NUMBER = 1;
    private java.lang.Object storedFieldName_;
    /**
     * required string storedFieldName = 1;
     */
    public boolean hasStoredFieldName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string storedFieldName = 1;
     */
    public java.lang.String getStoredFieldName() {
      java.lang.Object ref = storedFieldName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          storedFieldName_ = s;
        }
        return s;
      }
    }
    /**
     * required string storedFieldName = 1;
     */
    public com.google.protobuf.ByteString
        getStoredFieldNameBytes() {
      java.lang.Object ref = storedFieldName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storedFieldName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXAS_FIELD_NUMBER = 2;
    private java.util.List indexAs_;
    /**
     * repeated .IndexAs indexAs = 2;
     */
    public java.util.List getIndexAsList() {
      return indexAs_;
    }
    /**
     * repeated .IndexAs indexAs = 2;
     */
    public java.util.List 
        getIndexAsOrBuilderList() {
      return indexAs_;
    }
    /**
     * repeated .IndexAs indexAs = 2;
     */
    public int getIndexAsCount() {
      return indexAs_.size();
    }
    /**
     * repeated .IndexAs indexAs = 2;
     */
    public org.lumongo.cluster.message.Lumongo.IndexAs getIndexAs(int index) {
      return indexAs_.get(index);
    }
    /**
     * repeated .IndexAs indexAs = 2;
     */
    public org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder getIndexAsOrBuilder(
        int index) {
      return indexAs_.get(index);
    }

    public static final int FACETAS_FIELD_NUMBER = 3;
    private java.util.List facetAs_;
    /**
     * repeated .FacetAs facetAs = 3;
     */
    public java.util.List getFacetAsList() {
      return facetAs_;
    }
    /**
     * repeated .FacetAs facetAs = 3;
     */
    public java.util.List 
        getFacetAsOrBuilderList() {
      return facetAs_;
    }
    /**
     * repeated .FacetAs facetAs = 3;
     */
    public int getFacetAsCount() {
      return facetAs_.size();
    }
    /**
     * repeated .FacetAs facetAs = 3;
     */
    public org.lumongo.cluster.message.Lumongo.FacetAs getFacetAs(int index) {
      return facetAs_.get(index);
    }
    /**
     * repeated .FacetAs facetAs = 3;
     */
    public org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder getFacetAsOrBuilder(
        int index) {
      return facetAs_.get(index);
    }

    public static final int SORTAS_FIELD_NUMBER = 4;
    private org.lumongo.cluster.message.Lumongo.SortAs sortAs_;
    /**
     * optional .SortAs sortAs = 4;
     */
    public boolean hasSortAs() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional .SortAs sortAs = 4;
     */
    public org.lumongo.cluster.message.Lumongo.SortAs getSortAs() {
      return sortAs_;
    }
    /**
     * optional .SortAs sortAs = 4;
     */
    public org.lumongo.cluster.message.Lumongo.SortAsOrBuilder getSortAsOrBuilder() {
      return sortAs_;
    }

    private void initFields() {
      storedFieldName_ = "";
      indexAs_ = java.util.Collections.emptyList();
      facetAs_ = java.util.Collections.emptyList();
      sortAs_ = org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasStoredFieldName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getIndexAsCount(); i++) {
        if (!getIndexAs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFacetAsCount(); i++) {
        if (!getFacetAs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSortAs()) {
        if (!getSortAs().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStoredFieldNameBytes());
      }
      for (int i = 0; i < indexAs_.size(); i++) {
        output.writeMessage(2, indexAs_.get(i));
      }
      for (int i = 0; i < facetAs_.size(); i++) {
        output.writeMessage(3, facetAs_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, sortAs_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getStoredFieldNameBytes());
      }
      for (int i = 0; i < indexAs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, indexAs_.get(i));
      }
      for (int i = 0; i < facetAs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, facetAs_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, sortAs_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldConfig parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FieldConfig prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FieldConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FieldConfig)
        org.lumongo.cluster.message.Lumongo.FieldConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldConfig_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FieldConfig.class, org.lumongo.cluster.message.Lumongo.FieldConfig.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FieldConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexAsFieldBuilder();
          getFacetAsFieldBuilder();
          getSortAsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        storedFieldName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (indexAsBuilder_ == null) {
          indexAs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          indexAsBuilder_.clear();
        }
        if (facetAsBuilder_ == null) {
          facetAs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          facetAsBuilder_.clear();
        }
        if (sortAsBuilder_ == null) {
          sortAs_ = org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance();
        } else {
          sortAsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldConfig_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FieldConfig getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FieldConfig.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FieldConfig build() {
        org.lumongo.cluster.message.Lumongo.FieldConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FieldConfig buildPartial() {
        org.lumongo.cluster.message.Lumongo.FieldConfig result = new org.lumongo.cluster.message.Lumongo.FieldConfig(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.storedFieldName_ = storedFieldName_;
        if (indexAsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            indexAs_ = java.util.Collections.unmodifiableList(indexAs_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.indexAs_ = indexAs_;
        } else {
          result.indexAs_ = indexAsBuilder_.build();
        }
        if (facetAsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            facetAs_ = java.util.Collections.unmodifiableList(facetAs_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.facetAs_ = facetAs_;
        } else {
          result.facetAs_ = facetAsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        if (sortAsBuilder_ == null) {
          result.sortAs_ = sortAs_;
        } else {
          result.sortAs_ = sortAsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FieldConfig) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FieldConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FieldConfig other) {
        if (other == org.lumongo.cluster.message.Lumongo.FieldConfig.getDefaultInstance()) return this;
        if (other.hasStoredFieldName()) {
          bitField0_ |= 0x00000001;
          storedFieldName_ = other.storedFieldName_;
          onChanged();
        }
        if (indexAsBuilder_ == null) {
          if (!other.indexAs_.isEmpty()) {
            if (indexAs_.isEmpty()) {
              indexAs_ = other.indexAs_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureIndexAsIsMutable();
              indexAs_.addAll(other.indexAs_);
            }
            onChanged();
          }
        } else {
          if (!other.indexAs_.isEmpty()) {
            if (indexAsBuilder_.isEmpty()) {
              indexAsBuilder_.dispose();
              indexAsBuilder_ = null;
              indexAs_ = other.indexAs_;
              bitField0_ = (bitField0_ & ~0x00000002);
              indexAsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIndexAsFieldBuilder() : null;
            } else {
              indexAsBuilder_.addAllMessages(other.indexAs_);
            }
          }
        }
        if (facetAsBuilder_ == null) {
          if (!other.facetAs_.isEmpty()) {
            if (facetAs_.isEmpty()) {
              facetAs_ = other.facetAs_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureFacetAsIsMutable();
              facetAs_.addAll(other.facetAs_);
            }
            onChanged();
          }
        } else {
          if (!other.facetAs_.isEmpty()) {
            if (facetAsBuilder_.isEmpty()) {
              facetAsBuilder_.dispose();
              facetAsBuilder_ = null;
              facetAs_ = other.facetAs_;
              bitField0_ = (bitField0_ & ~0x00000004);
              facetAsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFacetAsFieldBuilder() : null;
            } else {
              facetAsBuilder_.addAllMessages(other.facetAs_);
            }
          }
        }
        if (other.hasSortAs()) {
          mergeSortAs(other.getSortAs());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStoredFieldName()) {
          
          return false;
        }
        for (int i = 0; i < getIndexAsCount(); i++) {
          if (!getIndexAs(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getFacetAsCount(); i++) {
          if (!getFacetAs(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasSortAs()) {
          if (!getSortAs().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FieldConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FieldConfig) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object storedFieldName_ = "";
      /**
       * required string storedFieldName = 1;
       */
      public boolean hasStoredFieldName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string storedFieldName = 1;
       */
      public java.lang.String getStoredFieldName() {
        java.lang.Object ref = storedFieldName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            storedFieldName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string storedFieldName = 1;
       */
      public com.google.protobuf.ByteString
          getStoredFieldNameBytes() {
        java.lang.Object ref = storedFieldName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storedFieldName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string storedFieldName = 1;
       */
      public Builder setStoredFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        storedFieldName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string storedFieldName = 1;
       */
      public Builder clearStoredFieldName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        storedFieldName_ = getDefaultInstance().getStoredFieldName();
        onChanged();
        return this;
      }
      /**
       * required string storedFieldName = 1;
       */
      public Builder setStoredFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        storedFieldName_ = value;
        onChanged();
        return this;
      }

      private java.util.List indexAs_ =
        java.util.Collections.emptyList();
      private void ensureIndexAsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          indexAs_ = new java.util.ArrayList(indexAs_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexAs, org.lumongo.cluster.message.Lumongo.IndexAs.Builder, org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder> indexAsBuilder_;

      /**
       * repeated .IndexAs indexAs = 2;
       */
      public java.util.List getIndexAsList() {
        if (indexAsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexAs_);
        } else {
          return indexAsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public int getIndexAsCount() {
        if (indexAsBuilder_ == null) {
          return indexAs_.size();
        } else {
          return indexAsBuilder_.getCount();
        }
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexAs getIndexAs(int index) {
        if (indexAsBuilder_ == null) {
          return indexAs_.get(index);
        } else {
          return indexAsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder setIndexAs(
          int index, org.lumongo.cluster.message.Lumongo.IndexAs value) {
        if (indexAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexAsIsMutable();
          indexAs_.set(index, value);
          onChanged();
        } else {
          indexAsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder setIndexAs(
          int index, org.lumongo.cluster.message.Lumongo.IndexAs.Builder builderForValue) {
        if (indexAsBuilder_ == null) {
          ensureIndexAsIsMutable();
          indexAs_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexAsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder addIndexAs(org.lumongo.cluster.message.Lumongo.IndexAs value) {
        if (indexAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexAsIsMutable();
          indexAs_.add(value);
          onChanged();
        } else {
          indexAsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder addIndexAs(
          int index, org.lumongo.cluster.message.Lumongo.IndexAs value) {
        if (indexAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexAsIsMutable();
          indexAs_.add(index, value);
          onChanged();
        } else {
          indexAsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder addIndexAs(
          org.lumongo.cluster.message.Lumongo.IndexAs.Builder builderForValue) {
        if (indexAsBuilder_ == null) {
          ensureIndexAsIsMutable();
          indexAs_.add(builderForValue.build());
          onChanged();
        } else {
          indexAsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder addIndexAs(
          int index, org.lumongo.cluster.message.Lumongo.IndexAs.Builder builderForValue) {
        if (indexAsBuilder_ == null) {
          ensureIndexAsIsMutable();
          indexAs_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexAsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder addAllIndexAs(
          java.lang.Iterable values) {
        if (indexAsBuilder_ == null) {
          ensureIndexAsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexAs_);
          onChanged();
        } else {
          indexAsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder clearIndexAs() {
        if (indexAsBuilder_ == null) {
          indexAs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          indexAsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public Builder removeIndexAs(int index) {
        if (indexAsBuilder_ == null) {
          ensureIndexAsIsMutable();
          indexAs_.remove(index);
          onChanged();
        } else {
          indexAsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexAs.Builder getIndexAsBuilder(
          int index) {
        return getIndexAsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder getIndexAsOrBuilder(
          int index) {
        if (indexAsBuilder_ == null) {
          return indexAs_.get(index);  } else {
          return indexAsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public java.util.List 
           getIndexAsOrBuilderList() {
        if (indexAsBuilder_ != null) {
          return indexAsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexAs_);
        }
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexAs.Builder addIndexAsBuilder() {
        return getIndexAsFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.IndexAs.getDefaultInstance());
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public org.lumongo.cluster.message.Lumongo.IndexAs.Builder addIndexAsBuilder(
          int index) {
        return getIndexAsFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.IndexAs.getDefaultInstance());
      }
      /**
       * repeated .IndexAs indexAs = 2;
       */
      public java.util.List 
           getIndexAsBuilderList() {
        return getIndexAsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexAs, org.lumongo.cluster.message.Lumongo.IndexAs.Builder, org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder> 
          getIndexAsFieldBuilder() {
        if (indexAsBuilder_ == null) {
          indexAsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.IndexAs, org.lumongo.cluster.message.Lumongo.IndexAs.Builder, org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder>(
                  indexAs_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          indexAs_ = null;
        }
        return indexAsBuilder_;
      }

      private java.util.List facetAs_ =
        java.util.Collections.emptyList();
      private void ensureFacetAsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          facetAs_ = new java.util.ArrayList(facetAs_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetAs, org.lumongo.cluster.message.Lumongo.FacetAs.Builder, org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder> facetAsBuilder_;

      /**
       * repeated .FacetAs facetAs = 3;
       */
      public java.util.List getFacetAsList() {
        if (facetAsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(facetAs_);
        } else {
          return facetAsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public int getFacetAsCount() {
        if (facetAsBuilder_ == null) {
          return facetAs_.size();
        } else {
          return facetAsBuilder_.getCount();
        }
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAs getFacetAs(int index) {
        if (facetAsBuilder_ == null) {
          return facetAs_.get(index);
        } else {
          return facetAsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder setFacetAs(
          int index, org.lumongo.cluster.message.Lumongo.FacetAs value) {
        if (facetAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetAsIsMutable();
          facetAs_.set(index, value);
          onChanged();
        } else {
          facetAsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder setFacetAs(
          int index, org.lumongo.cluster.message.Lumongo.FacetAs.Builder builderForValue) {
        if (facetAsBuilder_ == null) {
          ensureFacetAsIsMutable();
          facetAs_.set(index, builderForValue.build());
          onChanged();
        } else {
          facetAsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder addFacetAs(org.lumongo.cluster.message.Lumongo.FacetAs value) {
        if (facetAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetAsIsMutable();
          facetAs_.add(value);
          onChanged();
        } else {
          facetAsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder addFacetAs(
          int index, org.lumongo.cluster.message.Lumongo.FacetAs value) {
        if (facetAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetAsIsMutable();
          facetAs_.add(index, value);
          onChanged();
        } else {
          facetAsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder addFacetAs(
          org.lumongo.cluster.message.Lumongo.FacetAs.Builder builderForValue) {
        if (facetAsBuilder_ == null) {
          ensureFacetAsIsMutable();
          facetAs_.add(builderForValue.build());
          onChanged();
        } else {
          facetAsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder addFacetAs(
          int index, org.lumongo.cluster.message.Lumongo.FacetAs.Builder builderForValue) {
        if (facetAsBuilder_ == null) {
          ensureFacetAsIsMutable();
          facetAs_.add(index, builderForValue.build());
          onChanged();
        } else {
          facetAsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder addAllFacetAs(
          java.lang.Iterable values) {
        if (facetAsBuilder_ == null) {
          ensureFacetAsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, facetAs_);
          onChanged();
        } else {
          facetAsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder clearFacetAs() {
        if (facetAsBuilder_ == null) {
          facetAs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          facetAsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public Builder removeFacetAs(int index) {
        if (facetAsBuilder_ == null) {
          ensureFacetAsIsMutable();
          facetAs_.remove(index);
          onChanged();
        } else {
          facetAsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAs.Builder getFacetAsBuilder(
          int index) {
        return getFacetAsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder getFacetAsOrBuilder(
          int index) {
        if (facetAsBuilder_ == null) {
          return facetAs_.get(index);  } else {
          return facetAsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public java.util.List 
           getFacetAsOrBuilderList() {
        if (facetAsBuilder_ != null) {
          return facetAsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(facetAs_);
        }
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAs.Builder addFacetAsBuilder() {
        return getFacetAsFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FacetAs.getDefaultInstance());
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAs.Builder addFacetAsBuilder(
          int index) {
        return getFacetAsFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FacetAs.getDefaultInstance());
      }
      /**
       * repeated .FacetAs facetAs = 3;
       */
      public java.util.List 
           getFacetAsBuilderList() {
        return getFacetAsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetAs, org.lumongo.cluster.message.Lumongo.FacetAs.Builder, org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder> 
          getFacetAsFieldBuilder() {
        if (facetAsBuilder_ == null) {
          facetAsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FacetAs, org.lumongo.cluster.message.Lumongo.FacetAs.Builder, org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder>(
                  facetAs_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          facetAs_ = null;
        }
        return facetAsBuilder_;
      }

      private org.lumongo.cluster.message.Lumongo.SortAs sortAs_ = org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SortAs, org.lumongo.cluster.message.Lumongo.SortAs.Builder, org.lumongo.cluster.message.Lumongo.SortAsOrBuilder> sortAsBuilder_;
      /**
       * optional .SortAs sortAs = 4;
       */
      public boolean hasSortAs() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public org.lumongo.cluster.message.Lumongo.SortAs getSortAs() {
        if (sortAsBuilder_ == null) {
          return sortAs_;
        } else {
          return sortAsBuilder_.getMessage();
        }
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public Builder setSortAs(org.lumongo.cluster.message.Lumongo.SortAs value) {
        if (sortAsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sortAs_ = value;
          onChanged();
        } else {
          sortAsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public Builder setSortAs(
          org.lumongo.cluster.message.Lumongo.SortAs.Builder builderForValue) {
        if (sortAsBuilder_ == null) {
          sortAs_ = builderForValue.build();
          onChanged();
        } else {
          sortAsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public Builder mergeSortAs(org.lumongo.cluster.message.Lumongo.SortAs value) {
        if (sortAsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              sortAs_ != org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance()) {
            sortAs_ =
              org.lumongo.cluster.message.Lumongo.SortAs.newBuilder(sortAs_).mergeFrom(value).buildPartial();
          } else {
            sortAs_ = value;
          }
          onChanged();
        } else {
          sortAsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public Builder clearSortAs() {
        if (sortAsBuilder_ == null) {
          sortAs_ = org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance();
          onChanged();
        } else {
          sortAsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public org.lumongo.cluster.message.Lumongo.SortAs.Builder getSortAsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSortAsFieldBuilder().getBuilder();
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      public org.lumongo.cluster.message.Lumongo.SortAsOrBuilder getSortAsOrBuilder() {
        if (sortAsBuilder_ != null) {
          return sortAsBuilder_.getMessageOrBuilder();
        } else {
          return sortAs_;
        }
      }
      /**
       * optional .SortAs sortAs = 4;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SortAs, org.lumongo.cluster.message.Lumongo.SortAs.Builder, org.lumongo.cluster.message.Lumongo.SortAsOrBuilder> 
          getSortAsFieldBuilder() {
        if (sortAsBuilder_ == null) {
          sortAsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.SortAs, org.lumongo.cluster.message.Lumongo.SortAs.Builder, org.lumongo.cluster.message.Lumongo.SortAsOrBuilder>(
                  getSortAs(),
                  getParentForChildren(),
                  isClean());
          sortAs_ = null;
        }
        return sortAsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:FieldConfig)
    }

    static {
      defaultInstance = new FieldConfig(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FieldConfig)
  }

  public interface IndexAsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexAs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexFieldName = 1;
     */
    boolean hasIndexFieldName();
    /**
     * required string indexFieldName = 1;
     */
    java.lang.String getIndexFieldName();
    /**
     * required string indexFieldName = 1;
     */
    com.google.protobuf.ByteString
        getIndexFieldNameBytes();

    /**
     * required .LMAnalyzer analyzer = 2;
     */
    boolean hasAnalyzer();
    /**
     * required .LMAnalyzer analyzer = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMAnalyzer getAnalyzer();
  }
  /**
   * Protobuf type {@code IndexAs}
   */
  public static final class IndexAs extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexAs)
      IndexAsOrBuilder {
    // Use IndexAs.newBuilder() to construct.
    private IndexAs(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexAs(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexAs defaultInstance;
    public static IndexAs getDefaultInstance() {
      return defaultInstance;
    }

    public IndexAs getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexAs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexFieldName_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.LMAnalyzer value = org.lumongo.cluster.message.Lumongo.LMAnalyzer.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                analyzer_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexAs_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexAs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexAs.class, org.lumongo.cluster.message.Lumongo.IndexAs.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexAs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexAs(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXFIELDNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexFieldName_;
    /**
     * required string indexFieldName = 1;
     */
    public boolean hasIndexFieldName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexFieldName = 1;
     */
    public java.lang.String getIndexFieldName() {
      java.lang.Object ref = indexFieldName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexFieldName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexFieldName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexFieldNameBytes() {
      java.lang.Object ref = indexFieldName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexFieldName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ANALYZER_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.LMAnalyzer analyzer_;
    /**
     * required .LMAnalyzer analyzer = 2;
     */
    public boolean hasAnalyzer() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .LMAnalyzer analyzer = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMAnalyzer getAnalyzer() {
      return analyzer_;
    }

    private void initFields() {
      indexFieldName_ = "";
      analyzer_ = org.lumongo.cluster.message.Lumongo.LMAnalyzer.KEYWORD;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexFieldName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAnalyzer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexFieldNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, analyzer_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexFieldNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, analyzer_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexAs parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexAs prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexAs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexAs)
        org.lumongo.cluster.message.Lumongo.IndexAsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexAs_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexAs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexAs.class, org.lumongo.cluster.message.Lumongo.IndexAs.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexAs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexFieldName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        analyzer_ = org.lumongo.cluster.message.Lumongo.LMAnalyzer.KEYWORD;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexAs_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexAs getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexAs.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexAs build() {
        org.lumongo.cluster.message.Lumongo.IndexAs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexAs buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexAs result = new org.lumongo.cluster.message.Lumongo.IndexAs(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexFieldName_ = indexFieldName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.analyzer_ = analyzer_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexAs) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexAs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexAs other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexAs.getDefaultInstance()) return this;
        if (other.hasIndexFieldName()) {
          bitField0_ |= 0x00000001;
          indexFieldName_ = other.indexFieldName_;
          onChanged();
        }
        if (other.hasAnalyzer()) {
          setAnalyzer(other.getAnalyzer());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexFieldName()) {
          
          return false;
        }
        if (!hasAnalyzer()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexAs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexAs) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexFieldName_ = "";
      /**
       * required string indexFieldName = 1;
       */
      public boolean hasIndexFieldName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexFieldName = 1;
       */
      public java.lang.String getIndexFieldName() {
        java.lang.Object ref = indexFieldName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexFieldName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexFieldName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexFieldNameBytes() {
        java.lang.Object ref = indexFieldName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexFieldName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexFieldName = 1;
       */
      public Builder setIndexFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexFieldName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexFieldName = 1;
       */
      public Builder clearIndexFieldName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexFieldName_ = getDefaultInstance().getIndexFieldName();
        onChanged();
        return this;
      }
      /**
       * required string indexFieldName = 1;
       */
      public Builder setIndexFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexFieldName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.LMAnalyzer analyzer_ = org.lumongo.cluster.message.Lumongo.LMAnalyzer.KEYWORD;
      /**
       * required .LMAnalyzer analyzer = 2;
       */
      public boolean hasAnalyzer() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required .LMAnalyzer analyzer = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMAnalyzer getAnalyzer() {
        return analyzer_;
      }
      /**
       * required .LMAnalyzer analyzer = 2;
       */
      public Builder setAnalyzer(org.lumongo.cluster.message.Lumongo.LMAnalyzer value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        analyzer_ = value;
        onChanged();
        return this;
      }
      /**
       * required .LMAnalyzer analyzer = 2;
       */
      public Builder clearAnalyzer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        analyzer_ = org.lumongo.cluster.message.Lumongo.LMAnalyzer.KEYWORD;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexAs)
    }

    static {
      defaultInstance = new IndexAs(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexAs)
  }

  public interface FacetAsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FacetAs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string facetName = 1;
     */
    boolean hasFacetName();
    /**
     * required string facetName = 1;
     */
    java.lang.String getFacetName();
    /**
     * required string facetName = 1;
     */
    com.google.protobuf.ByteString
        getFacetNameBytes();

    /**
     * required .FacetAs.LMFacetType facetType = 2;
     */
    boolean hasFacetType();
    /**
     * required .FacetAs.LMFacetType facetType = 2;
     */
    org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType getFacetType();
  }
  /**
   * Protobuf type {@code FacetAs}
   */
  public static final class FacetAs extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FacetAs)
      FacetAsOrBuilder {
    // Use FacetAs.newBuilder() to construct.
    private FacetAs(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FacetAs(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FacetAs defaultInstance;
    public static FacetAs getDefaultInstance() {
      return defaultInstance;
    }

    public FacetAs getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FacetAs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              facetName_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType value = org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                facetType_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetAs_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetAs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FacetAs.class, org.lumongo.cluster.message.Lumongo.FacetAs.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FacetAs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FacetAs(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code FacetAs.LMFacetType}
     */
    public enum LMFacetType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * STANDARD = 1;
       */
      STANDARD(0, 1),
      /**
       * DATE_YYYY_MM_DD = 2;
       */
      DATE_YYYY_MM_DD(1, 2),
      /**
       * DATE_YYYYMMDD = 3;
       */
      DATE_YYYYMMDD(2, 3),
      ;

      /**
       * STANDARD = 1;
       */
      public static final int STANDARD_VALUE = 1;
      /**
       * DATE_YYYY_MM_DD = 2;
       */
      public static final int DATE_YYYY_MM_DD_VALUE = 2;
      /**
       * DATE_YYYYMMDD = 3;
       */
      public static final int DATE_YYYYMMDD_VALUE = 3;


      public final int getNumber() { return value; }

      public static LMFacetType valueOf(int value) {
        switch (value) {
          case 1: return STANDARD;
          case 2: return DATE_YYYY_MM_DD;
          case 3: return DATE_YYYYMMDD;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public LMFacetType findValueByNumber(int number) {
                return LMFacetType.valueOf(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.FacetAs.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int index;
      private final int value;

      private LMFacetType(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:FacetAs.LMFacetType)
    }

    private int bitField0_;
    public static final int FACETNAME_FIELD_NUMBER = 1;
    private java.lang.Object facetName_;
    /**
     * required string facetName = 1;
     */
    public boolean hasFacetName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string facetName = 1;
     */
    public java.lang.String getFacetName() {
      java.lang.Object ref = facetName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          facetName_ = s;
        }
        return s;
      }
    }
    /**
     * required string facetName = 1;
     */
    public com.google.protobuf.ByteString
        getFacetNameBytes() {
      java.lang.Object ref = facetName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        facetName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FACETTYPE_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType facetType_;
    /**
     * required .FacetAs.LMFacetType facetType = 2;
     */
    public boolean hasFacetType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .FacetAs.LMFacetType facetType = 2;
     */
    public org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType getFacetType() {
      return facetType_;
    }

    private void initFields() {
      facetName_ = "";
      facetType_ = org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType.STANDARD;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFacetName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFacetType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getFacetNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, facetType_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getFacetNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, facetType_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetAs parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FacetAs prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FacetAs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FacetAs)
        org.lumongo.cluster.message.Lumongo.FacetAsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetAs_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetAs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FacetAs.class, org.lumongo.cluster.message.Lumongo.FacetAs.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FacetAs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        facetName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        facetType_ = org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType.STANDARD;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetAs_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FacetAs getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FacetAs.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FacetAs build() {
        org.lumongo.cluster.message.Lumongo.FacetAs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FacetAs buildPartial() {
        org.lumongo.cluster.message.Lumongo.FacetAs result = new org.lumongo.cluster.message.Lumongo.FacetAs(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.facetName_ = facetName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.facetType_ = facetType_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FacetAs) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FacetAs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FacetAs other) {
        if (other == org.lumongo.cluster.message.Lumongo.FacetAs.getDefaultInstance()) return this;
        if (other.hasFacetName()) {
          bitField0_ |= 0x00000001;
          facetName_ = other.facetName_;
          onChanged();
        }
        if (other.hasFacetType()) {
          setFacetType(other.getFacetType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFacetName()) {
          
          return false;
        }
        if (!hasFacetType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FacetAs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FacetAs) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object facetName_ = "";
      /**
       * required string facetName = 1;
       */
      public boolean hasFacetName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string facetName = 1;
       */
      public java.lang.String getFacetName() {
        java.lang.Object ref = facetName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            facetName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string facetName = 1;
       */
      public com.google.protobuf.ByteString
          getFacetNameBytes() {
        java.lang.Object ref = facetName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          facetName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string facetName = 1;
       */
      public Builder setFacetName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        facetName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string facetName = 1;
       */
      public Builder clearFacetName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        facetName_ = getDefaultInstance().getFacetName();
        onChanged();
        return this;
      }
      /**
       * required string facetName = 1;
       */
      public Builder setFacetNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        facetName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType facetType_ = org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType.STANDARD;
      /**
       * required .FacetAs.LMFacetType facetType = 2;
       */
      public boolean hasFacetType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required .FacetAs.LMFacetType facetType = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType getFacetType() {
        return facetType_;
      }
      /**
       * required .FacetAs.LMFacetType facetType = 2;
       */
      public Builder setFacetType(org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        facetType_ = value;
        onChanged();
        return this;
      }
      /**
       * required .FacetAs.LMFacetType facetType = 2;
       */
      public Builder clearFacetType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        facetType_ = org.lumongo.cluster.message.Lumongo.FacetAs.LMFacetType.STANDARD;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FacetAs)
    }

    static {
      defaultInstance = new FacetAs(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FacetAs)
  }

  public interface SortAsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SortAs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string sortFieldName = 1;
     */
    boolean hasSortFieldName();
    /**
     * required string sortFieldName = 1;
     */
    java.lang.String getSortFieldName();
    /**
     * required string sortFieldName = 1;
     */
    com.google.protobuf.ByteString
        getSortFieldNameBytes();

    /**
     * required .SortAs.SortType sortType = 2;
     */
    boolean hasSortType();
    /**
     * required .SortAs.SortType sortType = 2;
     */
    org.lumongo.cluster.message.Lumongo.SortAs.SortType getSortType();
  }
  /**
   * Protobuf type {@code SortAs}
   */
  public static final class SortAs extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:SortAs)
      SortAsOrBuilder {
    // Use SortAs.newBuilder() to construct.
    private SortAs(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SortAs(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SortAs defaultInstance;
    public static SortAs getDefaultInstance() {
      return defaultInstance;
    }

    public SortAs getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SortAs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              sortFieldName_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.SortAs.SortType value = org.lumongo.cluster.message.Lumongo.SortAs.SortType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                sortType_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SortAs_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SortAs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.SortAs.class, org.lumongo.cluster.message.Lumongo.SortAs.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public SortAs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SortAs(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code SortAs.SortType}
     */
    public enum SortType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * STRING = 1;
       */
      STRING(0, 1),
      /**
       * NUMERIC_INT = 2;
       */
      NUMERIC_INT(1, 2),
      /**
       * NUMERIC_LONG = 3;
       */
      NUMERIC_LONG(2, 3),
      /**
       * NUMERIC_FLOAT = 4;
       */
      NUMERIC_FLOAT(3, 4),
      /**
       * NUMERIC_DOUBLE = 5;
       */
      NUMERIC_DOUBLE(4, 5),
      /**
       * DATE = 6;
       */
      DATE(5, 6),
      ;

      /**
       * STRING = 1;
       */
      public static final int STRING_VALUE = 1;
      /**
       * NUMERIC_INT = 2;
       */
      public static final int NUMERIC_INT_VALUE = 2;
      /**
       * NUMERIC_LONG = 3;
       */
      public static final int NUMERIC_LONG_VALUE = 3;
      /**
       * NUMERIC_FLOAT = 4;
       */
      public static final int NUMERIC_FLOAT_VALUE = 4;
      /**
       * NUMERIC_DOUBLE = 5;
       */
      public static final int NUMERIC_DOUBLE_VALUE = 5;
      /**
       * DATE = 6;
       */
      public static final int DATE_VALUE = 6;


      public final int getNumber() { return value; }

      public static SortType valueOf(int value) {
        switch (value) {
          case 1: return STRING;
          case 2: return NUMERIC_INT;
          case 3: return NUMERIC_LONG;
          case 4: return NUMERIC_FLOAT;
          case 5: return NUMERIC_DOUBLE;
          case 6: return DATE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public SortType findValueByNumber(int number) {
                return SortType.valueOf(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.SortAs.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int index;
      private final int value;

      private SortType(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:SortAs.SortType)
    }

    private int bitField0_;
    public static final int SORTFIELDNAME_FIELD_NUMBER = 1;
    private java.lang.Object sortFieldName_;
    /**
     * required string sortFieldName = 1;
     */
    public boolean hasSortFieldName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string sortFieldName = 1;
     */
    public java.lang.String getSortFieldName() {
      java.lang.Object ref = sortFieldName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sortFieldName_ = s;
        }
        return s;
      }
    }
    /**
     * required string sortFieldName = 1;
     */
    public com.google.protobuf.ByteString
        getSortFieldNameBytes() {
      java.lang.Object ref = sortFieldName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sortFieldName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SORTTYPE_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.SortAs.SortType sortType_;
    /**
     * required .SortAs.SortType sortType = 2;
     */
    public boolean hasSortType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .SortAs.SortType sortType = 2;
     */
    public org.lumongo.cluster.message.Lumongo.SortAs.SortType getSortType() {
      return sortType_;
    }

    private void initFields() {
      sortFieldName_ = "";
      sortType_ = org.lumongo.cluster.message.Lumongo.SortAs.SortType.STRING;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSortFieldName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSortType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getSortFieldNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, sortType_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getSortFieldNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, sortType_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortAs parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.SortAs prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SortAs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:SortAs)
        org.lumongo.cluster.message.Lumongo.SortAsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortAs_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortAs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.SortAs.class, org.lumongo.cluster.message.Lumongo.SortAs.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.SortAs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        sortFieldName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        sortType_ = org.lumongo.cluster.message.Lumongo.SortAs.SortType.STRING;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortAs_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.SortAs getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.SortAs build() {
        org.lumongo.cluster.message.Lumongo.SortAs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.SortAs buildPartial() {
        org.lumongo.cluster.message.Lumongo.SortAs result = new org.lumongo.cluster.message.Lumongo.SortAs(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sortFieldName_ = sortFieldName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.sortType_ = sortType_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.SortAs) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.SortAs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.SortAs other) {
        if (other == org.lumongo.cluster.message.Lumongo.SortAs.getDefaultInstance()) return this;
        if (other.hasSortFieldName()) {
          bitField0_ |= 0x00000001;
          sortFieldName_ = other.sortFieldName_;
          onChanged();
        }
        if (other.hasSortType()) {
          setSortType(other.getSortType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSortFieldName()) {
          
          return false;
        }
        if (!hasSortType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.SortAs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.SortAs) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object sortFieldName_ = "";
      /**
       * required string sortFieldName = 1;
       */
      public boolean hasSortFieldName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string sortFieldName = 1;
       */
      public java.lang.String getSortFieldName() {
        java.lang.Object ref = sortFieldName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sortFieldName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string sortFieldName = 1;
       */
      public com.google.protobuf.ByteString
          getSortFieldNameBytes() {
        java.lang.Object ref = sortFieldName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sortFieldName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string sortFieldName = 1;
       */
      public Builder setSortFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sortFieldName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string sortFieldName = 1;
       */
      public Builder clearSortFieldName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sortFieldName_ = getDefaultInstance().getSortFieldName();
        onChanged();
        return this;
      }
      /**
       * required string sortFieldName = 1;
       */
      public Builder setSortFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sortFieldName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.SortAs.SortType sortType_ = org.lumongo.cluster.message.Lumongo.SortAs.SortType.STRING;
      /**
       * required .SortAs.SortType sortType = 2;
       */
      public boolean hasSortType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required .SortAs.SortType sortType = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SortAs.SortType getSortType() {
        return sortType_;
      }
      /**
       * required .SortAs.SortType sortType = 2;
       */
      public Builder setSortType(org.lumongo.cluster.message.Lumongo.SortAs.SortType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        sortType_ = value;
        onChanged();
        return this;
      }
      /**
       * required .SortAs.SortType sortType = 2;
       */
      public Builder clearSortType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        sortType_ = org.lumongo.cluster.message.Lumongo.SortAs.SortType.STRING;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SortAs)
    }

    static {
      defaultInstance = new SortAs(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SortAs)
  }

  public interface IndexSettingsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexSettingsResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code IndexSettingsResponse}
   */
  public static final class IndexSettingsResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexSettingsResponse)
      IndexSettingsResponseOrBuilder {
    // Use IndexSettingsResponse.newBuilder() to construct.
    private IndexSettingsResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexSettingsResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexSettingsResponse defaultInstance;
    public static IndexSettingsResponse getDefaultInstance() {
      return defaultInstance;
    }

    public IndexSettingsResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexSettingsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.class, org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexSettingsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexSettingsResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexSettingsResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexSettingsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexSettingsResponse)
        org.lumongo.cluster.message.Lumongo.IndexSettingsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.class, org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSettingsResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsResponse build() {
        org.lumongo.cluster.message.Lumongo.IndexSettingsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSettingsResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexSettingsResponse result = new org.lumongo.cluster.message.Lumongo.IndexSettingsResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexSettingsResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexSettingsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexSettingsResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexSettingsResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexSettingsResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexSettingsResponse)
    }

    static {
      defaultInstance = new IndexSettingsResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexSettingsResponse)
  }

  public interface IndexDeleteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexDeleteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();
  }
  /**
   * Protobuf type {@code IndexDeleteRequest}
   */
  public static final class IndexDeleteRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexDeleteRequest)
      IndexDeleteRequestOrBuilder {
    // Use IndexDeleteRequest.newBuilder() to construct.
    private IndexDeleteRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexDeleteRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexDeleteRequest defaultInstance;
    public static IndexDeleteRequest getDefaultInstance() {
      return defaultInstance;
    }

    public IndexDeleteRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexDeleteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.class, org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexDeleteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexDeleteRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      indexName_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexDeleteRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexDeleteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexDeleteRequest)
        org.lumongo.cluster.message.Lumongo.IndexDeleteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.class, org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteRequest build() {
        org.lumongo.cluster.message.Lumongo.IndexDeleteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexDeleteRequest result = new org.lumongo.cluster.message.Lumongo.IndexDeleteRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexDeleteRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexDeleteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexDeleteRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexDeleteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexDeleteRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexDeleteRequest)
    }

    static {
      defaultInstance = new IndexDeleteRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexDeleteRequest)
  }

  public interface IndexDeleteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexDeleteResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code IndexDeleteResponse}
   */
  public static final class IndexDeleteResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexDeleteResponse)
      IndexDeleteResponseOrBuilder {
    // Use IndexDeleteResponse.newBuilder() to construct.
    private IndexDeleteResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexDeleteResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexDeleteResponse defaultInstance;
    public static IndexDeleteResponse getDefaultInstance() {
      return defaultInstance;
    }

    public IndexDeleteResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexDeleteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.class, org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexDeleteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexDeleteResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexDeleteResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexDeleteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexDeleteResponse)
        org.lumongo.cluster.message.Lumongo.IndexDeleteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.class, org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexDeleteResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteResponse build() {
        org.lumongo.cluster.message.Lumongo.IndexDeleteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexDeleteResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexDeleteResponse result = new org.lumongo.cluster.message.Lumongo.IndexDeleteResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexDeleteResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexDeleteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexDeleteResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexDeleteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexDeleteResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IndexDeleteResponse)
    }

    static {
      defaultInstance = new IndexDeleteResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexDeleteResponse)
  }

  public interface StoreRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:StoreRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string uniqueId = 1;
     */
    boolean hasUniqueId();
    /**
     * required string uniqueId = 1;
     */
    java.lang.String getUniqueId();
    /**
     * required string uniqueId = 1;
     */
    com.google.protobuf.ByteString
        getUniqueIdBytes();

    /**
     * required string indexName = 2;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 2;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 2;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * optional .ResultDocument resultDocument = 3;
     */
    boolean hasResultDocument();
    /**
     * optional .ResultDocument resultDocument = 3;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument();
    /**
     * optional .ResultDocument resultDocument = 3;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder();

    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    java.util.List 
        getAssociatedDocumentList();
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index);
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    int getAssociatedDocumentCount();
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    java.util.List 
        getAssociatedDocumentOrBuilderList();
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
        int index);

    /**
     * optional bool clearExistingAssociated = 5 [default = false];
     */
    boolean hasClearExistingAssociated();
    /**
     * optional bool clearExistingAssociated = 5 [default = false];
     */
    boolean getClearExistingAssociated();
  }
  /**
   * Protobuf type {@code StoreRequest}
   */
  public static final class StoreRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:StoreRequest)
      StoreRequestOrBuilder {
    // Use StoreRequest.newBuilder() to construct.
    private StoreRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StoreRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final StoreRequest defaultInstance;
    public static StoreRequest getDefaultInstance() {
      return defaultInstance;
    }

    public StoreRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private StoreRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              uniqueId_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              indexName_ = bs;
              break;
            }
            case 26: {
              org.lumongo.cluster.message.Lumongo.ResultDocument.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = resultDocument_.toBuilder();
              }
              resultDocument_ = input.readMessage(org.lumongo.cluster.message.Lumongo.ResultDocument.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(resultDocument_);
                resultDocument_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                associatedDocument_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              associatedDocument_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.AssociatedDocument.PARSER, extensionRegistry));
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              clearExistingAssociated_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          associatedDocument_ = java.util.Collections.unmodifiableList(associatedDocument_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_StoreRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_StoreRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.StoreRequest.class, org.lumongo.cluster.message.Lumongo.StoreRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public StoreRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StoreRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int UNIQUEID_FIELD_NUMBER = 1;
    private java.lang.Object uniqueId_;
    /**
     * required string uniqueId = 1;
     */
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string uniqueId = 1;
     */
    public java.lang.String getUniqueId() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueId = 1;
     */
    public com.google.protobuf.ByteString
        getUniqueIdBytes() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXNAME_FIELD_NUMBER = 2;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 2;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string indexName = 2;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 2;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTDOCUMENT_FIELD_NUMBER = 3;
    private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_;
    /**
     * optional .ResultDocument resultDocument = 3;
     */
    public boolean hasResultDocument() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .ResultDocument resultDocument = 3;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
      return resultDocument_;
    }
    /**
     * optional .ResultDocument resultDocument = 3;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
      return resultDocument_;
    }

    public static final int ASSOCIATEDDOCUMENT_FIELD_NUMBER = 4;
    private java.util.List associatedDocument_;
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    public java.util.List getAssociatedDocumentList() {
      return associatedDocument_;
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    public java.util.List 
        getAssociatedDocumentOrBuilderList() {
      return associatedDocument_;
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    public int getAssociatedDocumentCount() {
      return associatedDocument_.size();
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    public org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index) {
      return associatedDocument_.get(index);
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 4;
     */
    public org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
        int index) {
      return associatedDocument_.get(index);
    }

    public static final int CLEAREXISTINGASSOCIATED_FIELD_NUMBER = 5;
    private boolean clearExistingAssociated_;
    /**
     * optional bool clearExistingAssociated = 5 [default = false];
     */
    public boolean hasClearExistingAssociated() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bool clearExistingAssociated = 5 [default = false];
     */
    public boolean getClearExistingAssociated() {
      return clearExistingAssociated_;
    }

    private void initFields() {
      uniqueId_ = "";
      indexName_ = "";
      resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      associatedDocument_ = java.util.Collections.emptyList();
      clearExistingAssociated_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasResultDocument()) {
        if (!getResultDocument().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAssociatedDocumentCount(); i++) {
        if (!getAssociatedDocument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, resultDocument_);
      }
      for (int i = 0; i < associatedDocument_.size(); i++) {
        output.writeMessage(4, associatedDocument_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(5, clearExistingAssociated_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, resultDocument_);
      }
      for (int i = 0; i < associatedDocument_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, associatedDocument_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, clearExistingAssociated_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.StoreRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code StoreRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:StoreRequest)
        org.lumongo.cluster.message.Lumongo.StoreRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.StoreRequest.class, org.lumongo.cluster.message.Lumongo.StoreRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.StoreRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getResultDocumentFieldBuilder();
          getAssociatedDocumentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (associatedDocumentBuilder_ == null) {
          associatedDocument_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          associatedDocumentBuilder_.clear();
        }
        clearExistingAssociated_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.StoreRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.StoreRequest build() {
        org.lumongo.cluster.message.Lumongo.StoreRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.StoreRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.StoreRequest result = new org.lumongo.cluster.message.Lumongo.StoreRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uniqueId_ = uniqueId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (resultDocumentBuilder_ == null) {
          result.resultDocument_ = resultDocument_;
        } else {
          result.resultDocument_ = resultDocumentBuilder_.build();
        }
        if (associatedDocumentBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            associatedDocument_ = java.util.Collections.unmodifiableList(associatedDocument_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.associatedDocument_ = associatedDocument_;
        } else {
          result.associatedDocument_ = associatedDocumentBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.clearExistingAssociated_ = clearExistingAssociated_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.StoreRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.StoreRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.StoreRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance()) return this;
        if (other.hasUniqueId()) {
          bitField0_ |= 0x00000001;
          uniqueId_ = other.uniqueId_;
          onChanged();
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000002;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasResultDocument()) {
          mergeResultDocument(other.getResultDocument());
        }
        if (associatedDocumentBuilder_ == null) {
          if (!other.associatedDocument_.isEmpty()) {
            if (associatedDocument_.isEmpty()) {
              associatedDocument_ = other.associatedDocument_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureAssociatedDocumentIsMutable();
              associatedDocument_.addAll(other.associatedDocument_);
            }
            onChanged();
          }
        } else {
          if (!other.associatedDocument_.isEmpty()) {
            if (associatedDocumentBuilder_.isEmpty()) {
              associatedDocumentBuilder_.dispose();
              associatedDocumentBuilder_ = null;
              associatedDocument_ = other.associatedDocument_;
              bitField0_ = (bitField0_ & ~0x00000008);
              associatedDocumentBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAssociatedDocumentFieldBuilder() : null;
            } else {
              associatedDocumentBuilder_.addAllMessages(other.associatedDocument_);
            }
          }
        }
        if (other.hasClearExistingAssociated()) {
          setClearExistingAssociated(other.getClearExistingAssociated());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUniqueId()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        if (hasResultDocument()) {
          if (!getResultDocument().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAssociatedDocumentCount(); i++) {
          if (!getAssociatedDocument(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.StoreRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.StoreRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object uniqueId_ = "";
      /**
       * required string uniqueId = 1;
       */
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string uniqueId = 1;
       */
      public java.lang.String getUniqueId() {
        java.lang.Object ref = uniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public com.google.protobuf.ByteString
          getUniqueIdBytes() {
        java.lang.Object ref = uniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueId_ = getDefaultInstance().getUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 2;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string indexName = 2;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> resultDocumentBuilder_;
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public boolean hasResultDocument() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
        if (resultDocumentBuilder_ == null) {
          return resultDocument_;
        } else {
          return resultDocumentBuilder_.getMessage();
        }
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public Builder setResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resultDocument_ = value;
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public Builder setResultDocument(
          org.lumongo.cluster.message.Lumongo.ResultDocument.Builder builderForValue) {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = builderForValue.build();
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public Builder mergeResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              resultDocument_ != org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance()) {
            resultDocument_ =
              org.lumongo.cluster.message.Lumongo.ResultDocument.newBuilder(resultDocument_).mergeFrom(value).buildPartial();
          } else {
            resultDocument_ = value;
          }
          onChanged();
        } else {
          resultDocumentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public Builder clearResultDocument() {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
          onChanged();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument.Builder getResultDocumentBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getResultDocumentFieldBuilder().getBuilder();
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
        if (resultDocumentBuilder_ != null) {
          return resultDocumentBuilder_.getMessageOrBuilder();
        } else {
          return resultDocument_;
        }
      }
      /**
       * optional .ResultDocument resultDocument = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> 
          getResultDocumentFieldBuilder() {
        if (resultDocumentBuilder_ == null) {
          resultDocumentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder>(
                  getResultDocument(),
                  getParentForChildren(),
                  isClean());
          resultDocument_ = null;
        }
        return resultDocumentBuilder_;
      }

      private java.util.List associatedDocument_ =
        java.util.Collections.emptyList();
      private void ensureAssociatedDocumentIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          associatedDocument_ = new java.util.ArrayList(associatedDocument_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder> associatedDocumentBuilder_;

      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public java.util.List getAssociatedDocumentList() {
        if (associatedDocumentBuilder_ == null) {
          return java.util.Collections.unmodifiableList(associatedDocument_);
        } else {
          return associatedDocumentBuilder_.getMessageList();
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public int getAssociatedDocumentCount() {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.size();
        } else {
          return associatedDocumentBuilder_.getCount();
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index) {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.get(index);
        } else {
          return associatedDocumentBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder setAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.set(index, value);
          onChanged();
        } else {
          associatedDocumentBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder setAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.set(index, builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder addAssociatedDocument(org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(value);
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder addAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(index, value);
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder addAssociatedDocument(
          org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder addAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(index, builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder addAllAssociatedDocument(
          java.lang.Iterable values) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, associatedDocument_);
          onChanged();
        } else {
          associatedDocumentBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder clearAssociatedDocument() {
        if (associatedDocumentBuilder_ == null) {
          associatedDocument_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          associatedDocumentBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public Builder removeAssociatedDocument(int index) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.remove(index);
          onChanged();
        } else {
          associatedDocumentBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder getAssociatedDocumentBuilder(
          int index) {
        return getAssociatedDocumentFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
          int index) {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.get(index);  } else {
          return associatedDocumentBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public java.util.List 
           getAssociatedDocumentOrBuilderList() {
        if (associatedDocumentBuilder_ != null) {
          return associatedDocumentBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(associatedDocument_);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder addAssociatedDocumentBuilder() {
        return getAssociatedDocumentFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance());
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder addAssociatedDocumentBuilder(
          int index) {
        return getAssociatedDocumentFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance());
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 4;
       */
      public java.util.List 
           getAssociatedDocumentBuilderList() {
        return getAssociatedDocumentFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder> 
          getAssociatedDocumentFieldBuilder() {
        if (associatedDocumentBuilder_ == null) {
          associatedDocumentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder>(
                  associatedDocument_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          associatedDocument_ = null;
        }
        return associatedDocumentBuilder_;
      }

      private boolean clearExistingAssociated_ ;
      /**
       * optional bool clearExistingAssociated = 5 [default = false];
       */
      public boolean hasClearExistingAssociated() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bool clearExistingAssociated = 5 [default = false];
       */
      public boolean getClearExistingAssociated() {
        return clearExistingAssociated_;
      }
      /**
       * optional bool clearExistingAssociated = 5 [default = false];
       */
      public Builder setClearExistingAssociated(boolean value) {
        bitField0_ |= 0x00000010;
        clearExistingAssociated_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool clearExistingAssociated = 5 [default = false];
       */
      public Builder clearClearExistingAssociated() {
        bitField0_ = (bitField0_ & ~0x00000010);
        clearExistingAssociated_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:StoreRequest)
    }

    static {
      defaultInstance = new StoreRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:StoreRequest)
  }

  public interface StoreResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:StoreResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code StoreResponse}
   */
  public static final class StoreResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:StoreResponse)
      StoreResponseOrBuilder {
    // Use StoreResponse.newBuilder() to construct.
    private StoreResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StoreResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final StoreResponse defaultInstance;
    public static StoreResponse getDefaultInstance() {
      return defaultInstance;
    }

    public StoreResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private StoreResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_StoreResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_StoreResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.StoreResponse.class, org.lumongo.cluster.message.Lumongo.StoreResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public StoreResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StoreResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.StoreResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.StoreResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code StoreResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:StoreResponse)
        org.lumongo.cluster.message.Lumongo.StoreResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.StoreResponse.class, org.lumongo.cluster.message.Lumongo.StoreResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.StoreResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_StoreResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.StoreResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.StoreResponse build() {
        org.lumongo.cluster.message.Lumongo.StoreResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.StoreResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.StoreResponse result = new org.lumongo.cluster.message.Lumongo.StoreResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.StoreResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.StoreResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.StoreResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.StoreResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.StoreResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:StoreResponse)
    }

    static {
      defaultInstance = new StoreResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:StoreResponse)
  }

  public interface LMDocOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LMDoc)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .LMField indexedField = 1;
     */
    java.util.List 
        getIndexedFieldList();
    /**
     * repeated .LMField indexedField = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMField getIndexedField(int index);
    /**
     * repeated .LMField indexedField = 1;
     */
    int getIndexedFieldCount();
    /**
     * repeated .LMField indexedField = 1;
     */
    java.util.List 
        getIndexedFieldOrBuilderList();
    /**
     * repeated .LMField indexedField = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder getIndexedFieldOrBuilder(
        int index);

    /**
     * repeated .LMFacet facet = 2;
     */
    java.util.List 
        getFacetList();
    /**
     * repeated .LMFacet facet = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMFacet getFacet(int index);
    /**
     * repeated .LMFacet facet = 2;
     */
    int getFacetCount();
    /**
     * repeated .LMFacet facet = 2;
     */
    java.util.List 
        getFacetOrBuilderList();
    /**
     * repeated .LMFacet facet = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetOrBuilder(
        int index);

    /**
     * optional int64 timestamp = 3;
     */
    boolean hasTimestamp();
    /**
     * optional int64 timestamp = 3;
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code LMDoc}
   */
  public static final class LMDoc extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LMDoc)
      LMDocOrBuilder {
    // Use LMDoc.newBuilder() to construct.
    private LMDoc(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LMDoc(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LMDoc defaultInstance;
    public static LMDoc getDefaultInstance() {
      return defaultInstance;
    }

    public LMDoc getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LMDoc(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                indexedField_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              indexedField_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.LMField.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                facet_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              facet_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.LMFacet.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000001;
              timestamp_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          indexedField_ = java.util.Collections.unmodifiableList(indexedField_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          facet_ = java.util.Collections.unmodifiableList(facet_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMDoc_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMDoc_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LMDoc.class, org.lumongo.cluster.message.Lumongo.LMDoc.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LMDoc parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LMDoc(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXEDFIELD_FIELD_NUMBER = 1;
    private java.util.List indexedField_;
    /**
     * repeated .LMField indexedField = 1;
     */
    public java.util.List getIndexedFieldList() {
      return indexedField_;
    }
    /**
     * repeated .LMField indexedField = 1;
     */
    public java.util.List 
        getIndexedFieldOrBuilderList() {
      return indexedField_;
    }
    /**
     * repeated .LMField indexedField = 1;
     */
    public int getIndexedFieldCount() {
      return indexedField_.size();
    }
    /**
     * repeated .LMField indexedField = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMField getIndexedField(int index) {
      return indexedField_.get(index);
    }
    /**
     * repeated .LMField indexedField = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder getIndexedFieldOrBuilder(
        int index) {
      return indexedField_.get(index);
    }

    public static final int FACET_FIELD_NUMBER = 2;
    private java.util.List facet_;
    /**
     * repeated .LMFacet facet = 2;
     */
    public java.util.List getFacetList() {
      return facet_;
    }
    /**
     * repeated .LMFacet facet = 2;
     */
    public java.util.List 
        getFacetOrBuilderList() {
      return facet_;
    }
    /**
     * repeated .LMFacet facet = 2;
     */
    public int getFacetCount() {
      return facet_.size();
    }
    /**
     * repeated .LMFacet facet = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacet getFacet(int index) {
      return facet_.get(index);
    }
    /**
     * repeated .LMFacet facet = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetOrBuilder(
        int index) {
      return facet_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_;
    /**
     * optional int64 timestamp = 3;
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional int64 timestamp = 3;
     */
    public long getTimestamp() {
      return timestamp_;
    }

    private void initFields() {
      indexedField_ = java.util.Collections.emptyList();
      facet_ = java.util.Collections.emptyList();
      timestamp_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getIndexedFieldCount(); i++) {
        if (!getIndexedField(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFacetCount(); i++) {
        if (!getFacet(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < indexedField_.size(); i++) {
        output.writeMessage(1, indexedField_.get(i));
      }
      for (int i = 0; i < facet_.size(); i++) {
        output.writeMessage(2, facet_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(3, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < indexedField_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, indexedField_.get(i));
      }
      for (int i = 0; i < facet_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, facet_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMDoc parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LMDoc prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LMDoc}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LMDoc)
        org.lumongo.cluster.message.Lumongo.LMDocOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMDoc_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMDoc_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LMDoc.class, org.lumongo.cluster.message.Lumongo.LMDoc.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LMDoc.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexedFieldFieldBuilder();
          getFacetFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (indexedFieldBuilder_ == null) {
          indexedField_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          indexedFieldBuilder_.clear();
        }
        if (facetBuilder_ == null) {
          facet_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          facetBuilder_.clear();
        }
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMDoc_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LMDoc getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LMDoc.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LMDoc build() {
        org.lumongo.cluster.message.Lumongo.LMDoc result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LMDoc buildPartial() {
        org.lumongo.cluster.message.Lumongo.LMDoc result = new org.lumongo.cluster.message.Lumongo.LMDoc(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (indexedFieldBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            indexedField_ = java.util.Collections.unmodifiableList(indexedField_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.indexedField_ = indexedField_;
        } else {
          result.indexedField_ = indexedFieldBuilder_.build();
        }
        if (facetBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            facet_ = java.util.Collections.unmodifiableList(facet_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.facet_ = facet_;
        } else {
          result.facet_ = facetBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestamp_ = timestamp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LMDoc) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LMDoc)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LMDoc other) {
        if (other == org.lumongo.cluster.message.Lumongo.LMDoc.getDefaultInstance()) return this;
        if (indexedFieldBuilder_ == null) {
          if (!other.indexedField_.isEmpty()) {
            if (indexedField_.isEmpty()) {
              indexedField_ = other.indexedField_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureIndexedFieldIsMutable();
              indexedField_.addAll(other.indexedField_);
            }
            onChanged();
          }
        } else {
          if (!other.indexedField_.isEmpty()) {
            if (indexedFieldBuilder_.isEmpty()) {
              indexedFieldBuilder_.dispose();
              indexedFieldBuilder_ = null;
              indexedField_ = other.indexedField_;
              bitField0_ = (bitField0_ & ~0x00000001);
              indexedFieldBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIndexedFieldFieldBuilder() : null;
            } else {
              indexedFieldBuilder_.addAllMessages(other.indexedField_);
            }
          }
        }
        if (facetBuilder_ == null) {
          if (!other.facet_.isEmpty()) {
            if (facet_.isEmpty()) {
              facet_ = other.facet_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFacetIsMutable();
              facet_.addAll(other.facet_);
            }
            onChanged();
          }
        } else {
          if (!other.facet_.isEmpty()) {
            if (facetBuilder_.isEmpty()) {
              facetBuilder_.dispose();
              facetBuilder_ = null;
              facet_ = other.facet_;
              bitField0_ = (bitField0_ & ~0x00000002);
              facetBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFacetFieldBuilder() : null;
            } else {
              facetBuilder_.addAllMessages(other.facet_);
            }
          }
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getIndexedFieldCount(); i++) {
          if (!getIndexedField(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getFacetCount(); i++) {
          if (!getFacet(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LMDoc parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LMDoc) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List indexedField_ =
        java.util.Collections.emptyList();
      private void ensureIndexedFieldIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          indexedField_ = new java.util.ArrayList(indexedField_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMField, org.lumongo.cluster.message.Lumongo.LMField.Builder, org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder> indexedFieldBuilder_;

      /**
       * repeated .LMField indexedField = 1;
       */
      public java.util.List getIndexedFieldList() {
        if (indexedFieldBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexedField_);
        } else {
          return indexedFieldBuilder_.getMessageList();
        }
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public int getIndexedFieldCount() {
        if (indexedFieldBuilder_ == null) {
          return indexedField_.size();
        } else {
          return indexedFieldBuilder_.getCount();
        }
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMField getIndexedField(int index) {
        if (indexedFieldBuilder_ == null) {
          return indexedField_.get(index);
        } else {
          return indexedFieldBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder setIndexedField(
          int index, org.lumongo.cluster.message.Lumongo.LMField value) {
        if (indexedFieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexedFieldIsMutable();
          indexedField_.set(index, value);
          onChanged();
        } else {
          indexedFieldBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder setIndexedField(
          int index, org.lumongo.cluster.message.Lumongo.LMField.Builder builderForValue) {
        if (indexedFieldBuilder_ == null) {
          ensureIndexedFieldIsMutable();
          indexedField_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexedFieldBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder addIndexedField(org.lumongo.cluster.message.Lumongo.LMField value) {
        if (indexedFieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexedFieldIsMutable();
          indexedField_.add(value);
          onChanged();
        } else {
          indexedFieldBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder addIndexedField(
          int index, org.lumongo.cluster.message.Lumongo.LMField value) {
        if (indexedFieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexedFieldIsMutable();
          indexedField_.add(index, value);
          onChanged();
        } else {
          indexedFieldBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder addIndexedField(
          org.lumongo.cluster.message.Lumongo.LMField.Builder builderForValue) {
        if (indexedFieldBuilder_ == null) {
          ensureIndexedFieldIsMutable();
          indexedField_.add(builderForValue.build());
          onChanged();
        } else {
          indexedFieldBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder addIndexedField(
          int index, org.lumongo.cluster.message.Lumongo.LMField.Builder builderForValue) {
        if (indexedFieldBuilder_ == null) {
          ensureIndexedFieldIsMutable();
          indexedField_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexedFieldBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder addAllIndexedField(
          java.lang.Iterable values) {
        if (indexedFieldBuilder_ == null) {
          ensureIndexedFieldIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexedField_);
          onChanged();
        } else {
          indexedFieldBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder clearIndexedField() {
        if (indexedFieldBuilder_ == null) {
          indexedField_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          indexedFieldBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public Builder removeIndexedField(int index) {
        if (indexedFieldBuilder_ == null) {
          ensureIndexedFieldIsMutable();
          indexedField_.remove(index);
          onChanged();
        } else {
          indexedFieldBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMField.Builder getIndexedFieldBuilder(
          int index) {
        return getIndexedFieldFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder getIndexedFieldOrBuilder(
          int index) {
        if (indexedFieldBuilder_ == null) {
          return indexedField_.get(index);  } else {
          return indexedFieldBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public java.util.List 
           getIndexedFieldOrBuilderList() {
        if (indexedFieldBuilder_ != null) {
          return indexedFieldBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexedField_);
        }
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMField.Builder addIndexedFieldBuilder() {
        return getIndexedFieldFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.LMField.getDefaultInstance());
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMField.Builder addIndexedFieldBuilder(
          int index) {
        return getIndexedFieldFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.LMField.getDefaultInstance());
      }
      /**
       * repeated .LMField indexedField = 1;
       */
      public java.util.List 
           getIndexedFieldBuilderList() {
        return getIndexedFieldFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMField, org.lumongo.cluster.message.Lumongo.LMField.Builder, org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder> 
          getIndexedFieldFieldBuilder() {
        if (indexedFieldBuilder_ == null) {
          indexedFieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMField, org.lumongo.cluster.message.Lumongo.LMField.Builder, org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder>(
                  indexedField_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          indexedField_ = null;
        }
        return indexedFieldBuilder_;
      }

      private java.util.List facet_ =
        java.util.Collections.emptyList();
      private void ensureFacetIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          facet_ = new java.util.ArrayList(facet_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> facetBuilder_;

      /**
       * repeated .LMFacet facet = 2;
       */
      public java.util.List getFacetList() {
        if (facetBuilder_ == null) {
          return java.util.Collections.unmodifiableList(facet_);
        } else {
          return facetBuilder_.getMessageList();
        }
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public int getFacetCount() {
        if (facetBuilder_ == null) {
          return facet_.size();
        } else {
          return facetBuilder_.getCount();
        }
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet getFacet(int index) {
        if (facetBuilder_ == null) {
          return facet_.get(index);
        } else {
          return facetBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder setFacet(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (facetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetIsMutable();
          facet_.set(index, value);
          onChanged();
        } else {
          facetBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder setFacet(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (facetBuilder_ == null) {
          ensureFacetIsMutable();
          facet_.set(index, builderForValue.build());
          onChanged();
        } else {
          facetBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder addFacet(org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (facetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetIsMutable();
          facet_.add(value);
          onChanged();
        } else {
          facetBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder addFacet(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (facetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetIsMutable();
          facet_.add(index, value);
          onChanged();
        } else {
          facetBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder addFacet(
          org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (facetBuilder_ == null) {
          ensureFacetIsMutable();
          facet_.add(builderForValue.build());
          onChanged();
        } else {
          facetBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder addFacet(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (facetBuilder_ == null) {
          ensureFacetIsMutable();
          facet_.add(index, builderForValue.build());
          onChanged();
        } else {
          facetBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder addAllFacet(
          java.lang.Iterable values) {
        if (facetBuilder_ == null) {
          ensureFacetIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, facet_);
          onChanged();
        } else {
          facetBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder clearFacet() {
        if (facetBuilder_ == null) {
          facet_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          facetBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public Builder removeFacet(int index) {
        if (facetBuilder_ == null) {
          ensureFacetIsMutable();
          facet_.remove(index);
          onChanged();
        } else {
          facetBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder getFacetBuilder(
          int index) {
        return getFacetFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetOrBuilder(
          int index) {
        if (facetBuilder_ == null) {
          return facet_.get(index);  } else {
          return facetBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public java.util.List 
           getFacetOrBuilderList() {
        if (facetBuilder_ != null) {
          return facetBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(facet_);
        }
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder addFacetBuilder() {
        return getFacetFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance());
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder addFacetBuilder(
          int index) {
        return getFacetFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance());
      }
      /**
       * repeated .LMFacet facet = 2;
       */
      public java.util.List 
           getFacetBuilderList() {
        return getFacetFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> 
          getFacetFieldBuilder() {
        if (facetBuilder_ == null) {
          facetBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder>(
                  facet_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          facet_ = null;
        }
        return facetBuilder_;
      }

      private long timestamp_ ;
      /**
       * optional int64 timestamp = 3;
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional int64 timestamp = 3;
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * optional int64 timestamp = 3;
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000004;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 timestamp = 3;
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:LMDoc)
    }

    static {
      defaultInstance = new LMDoc(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LMDoc)
  }

  public interface LMFacetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LMFacet)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string label = 1;
     */
    boolean hasLabel();
    /**
     * required string label = 1;
     */
    java.lang.String getLabel();
    /**
     * required string label = 1;
     */
    com.google.protobuf.ByteString
        getLabelBytes();

    /**
     * optional string path = 2;
     */
    boolean hasPath();
    /**
     * optional string path = 2;
     */
    java.lang.String getPath();
    /**
     * optional string path = 2;
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * Protobuf type {@code LMFacet}
   */
  public static final class LMFacet extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LMFacet)
      LMFacetOrBuilder {
    // Use LMFacet.newBuilder() to construct.
    private LMFacet(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LMFacet(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LMFacet defaultInstance;
    public static LMFacet getDefaultInstance() {
      return defaultInstance;
    }

    public LMFacet getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LMFacet(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              label_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              path_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMFacet_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMFacet_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LMFacet.class, org.lumongo.cluster.message.Lumongo.LMFacet.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LMFacet parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LMFacet(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LABEL_FIELD_NUMBER = 1;
    private java.lang.Object label_;
    /**
     * required string label = 1;
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string label = 1;
     */
    public java.lang.String getLabel() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          label_ = s;
        }
        return s;
      }
    }
    /**
     * required string label = 1;
     */
    public com.google.protobuf.ByteString
        getLabelBytes() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        label_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_FIELD_NUMBER = 2;
    private java.lang.Object path_;
    /**
     * optional string path = 2;
     */
    public boolean hasPath() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional string path = 2;
     */
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          path_ = s;
        }
        return s;
      }
    }
    /**
     * optional string path = 2;
     */
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      label_ = "";
      path_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLabel()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getLabelBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getPathBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getLabelBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getPathBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMFacet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LMFacet prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LMFacet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LMFacet)
        org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMFacet_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMFacet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LMFacet.class, org.lumongo.cluster.message.Lumongo.LMFacet.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LMFacet.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        label_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        path_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMFacet_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LMFacet getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LMFacet build() {
        org.lumongo.cluster.message.Lumongo.LMFacet result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LMFacet buildPartial() {
        org.lumongo.cluster.message.Lumongo.LMFacet result = new org.lumongo.cluster.message.Lumongo.LMFacet(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.label_ = label_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.path_ = path_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LMFacet) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LMFacet)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LMFacet other) {
        if (other == org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance()) return this;
        if (other.hasLabel()) {
          bitField0_ |= 0x00000001;
          label_ = other.label_;
          onChanged();
        }
        if (other.hasPath()) {
          bitField0_ |= 0x00000002;
          path_ = other.path_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLabel()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LMFacet parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LMFacet) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object label_ = "";
      /**
       * required string label = 1;
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string label = 1;
       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            label_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string label = 1;
       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string label = 1;
       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * required string label = 1;
       */
      public Builder clearLabel() {
        bitField0_ = (bitField0_ & ~0x00000001);
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * required string label = 1;
       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        label_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * optional string path = 2;
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string path = 2;
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            path_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string path = 2;
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string path = 2;
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string path = 2;
       */
      public Builder clearPath() {
        bitField0_ = (bitField0_ & ~0x00000002);
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * optional string path = 2;
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        path_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:LMFacet)
    }

    static {
      defaultInstance = new LMFacet(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LMFacet)
  }

  public interface LMFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LMField)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string fieldName = 1;
     */
    boolean hasFieldName();
    /**
     * required string fieldName = 1;
     */
    java.lang.String getFieldName();
    /**
     * required string fieldName = 1;
     */
    com.google.protobuf.ByteString
        getFieldNameBytes();

    /**
     * repeated string fieldValue = 2;
     */
    com.google.protobuf.ProtocolStringList
        getFieldValueList();
    /**
     * repeated string fieldValue = 2;
     */
    int getFieldValueCount();
    /**
     * repeated string fieldValue = 2;
     */
    java.lang.String getFieldValue(int index);
    /**
     * repeated string fieldValue = 2;
     */
    com.google.protobuf.ByteString
        getFieldValueBytes(int index);

    /**
     * repeated int32 intValue = 3;
     */
    java.util.List getIntValueList();
    /**
     * repeated int32 intValue = 3;
     */
    int getIntValueCount();
    /**
     * repeated int32 intValue = 3;
     */
    int getIntValue(int index);

    /**
     * repeated int64 longValue = 4;
     */
    java.util.List getLongValueList();
    /**
     * repeated int64 longValue = 4;
     */
    int getLongValueCount();
    /**
     * repeated int64 longValue = 4;
     */
    long getLongValue(int index);

    /**
     * repeated float floatValue = 5;
     */
    java.util.List getFloatValueList();
    /**
     * repeated float floatValue = 5;
     */
    int getFloatValueCount();
    /**
     * repeated float floatValue = 5;
     */
    float getFloatValue(int index);

    /**
     * repeated double doubleValue = 6;
     */
    java.util.List getDoubleValueList();
    /**
     * repeated double doubleValue = 6;
     */
    int getDoubleValueCount();
    /**
     * repeated double doubleValue = 6;
     */
    double getDoubleValue(int index);
  }
  /**
   * Protobuf type {@code LMField}
   */
  public static final class LMField extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LMField)
      LMFieldOrBuilder {
    // Use LMField.newBuilder() to construct.
    private LMField(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LMField(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LMField defaultInstance;
    public static LMField getDefaultInstance() {
      return defaultInstance;
    }

    public LMField getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LMField(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              fieldName_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                fieldValue_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              fieldValue_.add(bs);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                intValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              intValue_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                intValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                intValue_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                longValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              longValue_.add(input.readInt64());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                longValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                longValue_.add(input.readInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 45: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                floatValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              floatValue_.add(input.readFloat());
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                floatValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              while (input.getBytesUntilLimit() > 0) {
                floatValue_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 49: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                doubleValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              doubleValue_.add(input.readDouble());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                doubleValue_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                doubleValue_.add(input.readDouble());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          fieldValue_ = fieldValue_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = java.util.Collections.unmodifiableList(intValue_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          longValue_ = java.util.Collections.unmodifiableList(longValue_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          floatValue_ = java.util.Collections.unmodifiableList(floatValue_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          doubleValue_ = java.util.Collections.unmodifiableList(doubleValue_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMField_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LMField_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LMField.class, org.lumongo.cluster.message.Lumongo.LMField.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LMField parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LMField(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FIELDNAME_FIELD_NUMBER = 1;
    private java.lang.Object fieldName_;
    /**
     * required string fieldName = 1;
     */
    public boolean hasFieldName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string fieldName = 1;
     */
    public java.lang.String getFieldName() {
      java.lang.Object ref = fieldName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          fieldName_ = s;
        }
        return s;
      }
    }
    /**
     * required string fieldName = 1;
     */
    public com.google.protobuf.ByteString
        getFieldNameBytes() {
      java.lang.Object ref = fieldName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fieldName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDVALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList fieldValue_;
    /**
     * repeated string fieldValue = 2;
     */
    public com.google.protobuf.ProtocolStringList
        getFieldValueList() {
      return fieldValue_;
    }
    /**
     * repeated string fieldValue = 2;
     */
    public int getFieldValueCount() {
      return fieldValue_.size();
    }
    /**
     * repeated string fieldValue = 2;
     */
    public java.lang.String getFieldValue(int index) {
      return fieldValue_.get(index);
    }
    /**
     * repeated string fieldValue = 2;
     */
    public com.google.protobuf.ByteString
        getFieldValueBytes(int index) {
      return fieldValue_.getByteString(index);
    }

    public static final int INTVALUE_FIELD_NUMBER = 3;
    private java.util.List intValue_;
    /**
     * repeated int32 intValue = 3;
     */
    public java.util.List
        getIntValueList() {
      return intValue_;
    }
    /**
     * repeated int32 intValue = 3;
     */
    public int getIntValueCount() {
      return intValue_.size();
    }
    /**
     * repeated int32 intValue = 3;
     */
    public int getIntValue(int index) {
      return intValue_.get(index);
    }

    public static final int LONGVALUE_FIELD_NUMBER = 4;
    private java.util.List longValue_;
    /**
     * repeated int64 longValue = 4;
     */
    public java.util.List
        getLongValueList() {
      return longValue_;
    }
    /**
     * repeated int64 longValue = 4;
     */
    public int getLongValueCount() {
      return longValue_.size();
    }
    /**
     * repeated int64 longValue = 4;
     */
    public long getLongValue(int index) {
      return longValue_.get(index);
    }

    public static final int FLOATVALUE_FIELD_NUMBER = 5;
    private java.util.List floatValue_;
    /**
     * repeated float floatValue = 5;
     */
    public java.util.List
        getFloatValueList() {
      return floatValue_;
    }
    /**
     * repeated float floatValue = 5;
     */
    public int getFloatValueCount() {
      return floatValue_.size();
    }
    /**
     * repeated float floatValue = 5;
     */
    public float getFloatValue(int index) {
      return floatValue_.get(index);
    }

    public static final int DOUBLEVALUE_FIELD_NUMBER = 6;
    private java.util.List doubleValue_;
    /**
     * repeated double doubleValue = 6;
     */
    public java.util.List
        getDoubleValueList() {
      return doubleValue_;
    }
    /**
     * repeated double doubleValue = 6;
     */
    public int getDoubleValueCount() {
      return doubleValue_.size();
    }
    /**
     * repeated double doubleValue = 6;
     */
    public double getDoubleValue(int index) {
      return doubleValue_.get(index);
    }

    private void initFields() {
      fieldName_ = "";
      fieldValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      intValue_ = java.util.Collections.emptyList();
      longValue_ = java.util.Collections.emptyList();
      floatValue_ = java.util.Collections.emptyList();
      doubleValue_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFieldName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getFieldNameBytes());
      }
      for (int i = 0; i < fieldValue_.size(); i++) {
        output.writeBytes(2, fieldValue_.getByteString(i));
      }
      for (int i = 0; i < intValue_.size(); i++) {
        output.writeInt32(3, intValue_.get(i));
      }
      for (int i = 0; i < longValue_.size(); i++) {
        output.writeInt64(4, longValue_.get(i));
      }
      for (int i = 0; i < floatValue_.size(); i++) {
        output.writeFloat(5, floatValue_.get(i));
      }
      for (int i = 0; i < doubleValue_.size(); i++) {
        output.writeDouble(6, doubleValue_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getFieldNameBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < fieldValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(fieldValue_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getFieldValueList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(intValue_.get(i));
        }
        size += dataSize;
        size += 1 * getIntValueList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < longValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(longValue_.get(i));
        }
        size += dataSize;
        size += 1 * getLongValueList().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getFloatValueList().size();
        size += dataSize;
        size += 1 * getFloatValueList().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getDoubleValueList().size();
        size += dataSize;
        size += 1 * getDoubleValueList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LMField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LMField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LMField}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LMField)
        org.lumongo.cluster.message.Lumongo.LMFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMField_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMField_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LMField.class, org.lumongo.cluster.message.Lumongo.LMField.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LMField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        fieldName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        fieldValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        intValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        longValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        floatValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        doubleValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LMField_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LMField getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LMField.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LMField build() {
        org.lumongo.cluster.message.Lumongo.LMField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LMField buildPartial() {
        org.lumongo.cluster.message.Lumongo.LMField result = new org.lumongo.cluster.message.Lumongo.LMField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fieldName_ = fieldName_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          fieldValue_ = fieldValue_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.fieldValue_ = fieldValue_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = java.util.Collections.unmodifiableList(intValue_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.intValue_ = intValue_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          longValue_ = java.util.Collections.unmodifiableList(longValue_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.longValue_ = longValue_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          floatValue_ = java.util.Collections.unmodifiableList(floatValue_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.floatValue_ = floatValue_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          doubleValue_ = java.util.Collections.unmodifiableList(doubleValue_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.doubleValue_ = doubleValue_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LMField) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LMField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LMField other) {
        if (other == org.lumongo.cluster.message.Lumongo.LMField.getDefaultInstance()) return this;
        if (other.hasFieldName()) {
          bitField0_ |= 0x00000001;
          fieldName_ = other.fieldName_;
          onChanged();
        }
        if (!other.fieldValue_.isEmpty()) {
          if (fieldValue_.isEmpty()) {
            fieldValue_ = other.fieldValue_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureFieldValueIsMutable();
            fieldValue_.addAll(other.fieldValue_);
          }
          onChanged();
        }
        if (!other.intValue_.isEmpty()) {
          if (intValue_.isEmpty()) {
            intValue_ = other.intValue_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureIntValueIsMutable();
            intValue_.addAll(other.intValue_);
          }
          onChanged();
        }
        if (!other.longValue_.isEmpty()) {
          if (longValue_.isEmpty()) {
            longValue_ = other.longValue_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureLongValueIsMutable();
            longValue_.addAll(other.longValue_);
          }
          onChanged();
        }
        if (!other.floatValue_.isEmpty()) {
          if (floatValue_.isEmpty()) {
            floatValue_ = other.floatValue_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureFloatValueIsMutable();
            floatValue_.addAll(other.floatValue_);
          }
          onChanged();
        }
        if (!other.doubleValue_.isEmpty()) {
          if (doubleValue_.isEmpty()) {
            doubleValue_ = other.doubleValue_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureDoubleValueIsMutable();
            doubleValue_.addAll(other.doubleValue_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFieldName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LMField parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LMField) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object fieldName_ = "";
      /**
       * required string fieldName = 1;
       */
      public boolean hasFieldName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string fieldName = 1;
       */
      public java.lang.String getFieldName() {
        java.lang.Object ref = fieldName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fieldName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string fieldName = 1;
       */
      public com.google.protobuf.ByteString
          getFieldNameBytes() {
        java.lang.Object ref = fieldName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fieldName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string fieldName = 1;
       */
      public Builder setFieldName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        fieldName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string fieldName = 1;
       */
      public Builder clearFieldName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fieldName_ = getDefaultInstance().getFieldName();
        onChanged();
        return this;
      }
      /**
       * required string fieldName = 1;
       */
      public Builder setFieldNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        fieldName_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList fieldValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFieldValueIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          fieldValue_ = new com.google.protobuf.LazyStringArrayList(fieldValue_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated string fieldValue = 2;
       */
      public com.google.protobuf.ProtocolStringList
          getFieldValueList() {
        return fieldValue_.getUnmodifiableView();
      }
      /**
       * repeated string fieldValue = 2;
       */
      public int getFieldValueCount() {
        return fieldValue_.size();
      }
      /**
       * repeated string fieldValue = 2;
       */
      public java.lang.String getFieldValue(int index) {
        return fieldValue_.get(index);
      }
      /**
       * repeated string fieldValue = 2;
       */
      public com.google.protobuf.ByteString
          getFieldValueBytes(int index) {
        return fieldValue_.getByteString(index);
      }
      /**
       * repeated string fieldValue = 2;
       */
      public Builder setFieldValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldValueIsMutable();
        fieldValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldValue = 2;
       */
      public Builder addFieldValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldValueIsMutable();
        fieldValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldValue = 2;
       */
      public Builder addAllFieldValue(
          java.lang.Iterable values) {
        ensureFieldValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fieldValue_);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldValue = 2;
       */
      public Builder clearFieldValue() {
        fieldValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * repeated string fieldValue = 2;
       */
      public Builder addFieldValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldValueIsMutable();
        fieldValue_.add(value);
        onChanged();
        return this;
      }

      private java.util.List intValue_ = java.util.Collections.emptyList();
      private void ensureIntValueIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = new java.util.ArrayList(intValue_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * repeated int32 intValue = 3;
       */
      public java.util.List
          getIntValueList() {
        return java.util.Collections.unmodifiableList(intValue_);
      }
      /**
       * repeated int32 intValue = 3;
       */
      public int getIntValueCount() {
        return intValue_.size();
      }
      /**
       * repeated int32 intValue = 3;
       */
      public int getIntValue(int index) {
        return intValue_.get(index);
      }
      /**
       * repeated int32 intValue = 3;
       */
      public Builder setIntValue(
          int index, int value) {
        ensureIntValueIsMutable();
        intValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 intValue = 3;
       */
      public Builder addIntValue(int value) {
        ensureIntValueIsMutable();
        intValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 intValue = 3;
       */
      public Builder addAllIntValue(
          java.lang.Iterable values) {
        ensureIntValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intValue_);
        onChanged();
        return this;
      }
      /**
       * repeated int32 intValue = 3;
       */
      public Builder clearIntValue() {
        intValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List longValue_ = java.util.Collections.emptyList();
      private void ensureLongValueIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          longValue_ = new java.util.ArrayList(longValue_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * repeated int64 longValue = 4;
       */
      public java.util.List
          getLongValueList() {
        return java.util.Collections.unmodifiableList(longValue_);
      }
      /**
       * repeated int64 longValue = 4;
       */
      public int getLongValueCount() {
        return longValue_.size();
      }
      /**
       * repeated int64 longValue = 4;
       */
      public long getLongValue(int index) {
        return longValue_.get(index);
      }
      /**
       * repeated int64 longValue = 4;
       */
      public Builder setLongValue(
          int index, long value) {
        ensureLongValueIsMutable();
        longValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 longValue = 4;
       */
      public Builder addLongValue(long value) {
        ensureLongValueIsMutable();
        longValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 longValue = 4;
       */
      public Builder addAllLongValue(
          java.lang.Iterable values) {
        ensureLongValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, longValue_);
        onChanged();
        return this;
      }
      /**
       * repeated int64 longValue = 4;
       */
      public Builder clearLongValue() {
        longValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private java.util.List floatValue_ = java.util.Collections.emptyList();
      private void ensureFloatValueIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          floatValue_ = new java.util.ArrayList(floatValue_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * repeated float floatValue = 5;
       */
      public java.util.List
          getFloatValueList() {
        return java.util.Collections.unmodifiableList(floatValue_);
      }
      /**
       * repeated float floatValue = 5;
       */
      public int getFloatValueCount() {
        return floatValue_.size();
      }
      /**
       * repeated float floatValue = 5;
       */
      public float getFloatValue(int index) {
        return floatValue_.get(index);
      }
      /**
       * repeated float floatValue = 5;
       */
      public Builder setFloatValue(
          int index, float value) {
        ensureFloatValueIsMutable();
        floatValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float floatValue = 5;
       */
      public Builder addFloatValue(float value) {
        ensureFloatValueIsMutable();
        floatValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float floatValue = 5;
       */
      public Builder addAllFloatValue(
          java.lang.Iterable values) {
        ensureFloatValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, floatValue_);
        onChanged();
        return this;
      }
      /**
       * repeated float floatValue = 5;
       */
      public Builder clearFloatValue() {
        floatValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private java.util.List doubleValue_ = java.util.Collections.emptyList();
      private void ensureDoubleValueIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          doubleValue_ = new java.util.ArrayList(doubleValue_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * repeated double doubleValue = 6;
       */
      public java.util.List
          getDoubleValueList() {
        return java.util.Collections.unmodifiableList(doubleValue_);
      }
      /**
       * repeated double doubleValue = 6;
       */
      public int getDoubleValueCount() {
        return doubleValue_.size();
      }
      /**
       * repeated double doubleValue = 6;
       */
      public double getDoubleValue(int index) {
        return doubleValue_.get(index);
      }
      /**
       * repeated double doubleValue = 6;
       */
      public Builder setDoubleValue(
          int index, double value) {
        ensureDoubleValueIsMutable();
        doubleValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated double doubleValue = 6;
       */
      public Builder addDoubleValue(double value) {
        ensureDoubleValueIsMutable();
        doubleValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated double doubleValue = 6;
       */
      public Builder addAllDoubleValue(
          java.lang.Iterable values) {
        ensureDoubleValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, doubleValue_);
        onChanged();
        return this;
      }
      /**
       * repeated double doubleValue = 6;
       */
      public Builder clearDoubleValue() {
        doubleValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:LMField)
    }

    static {
      defaultInstance = new LMField(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LMField)
  }

  public interface ResultDocumentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ResultDocument)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string uniqueId = 1;
     */
    boolean hasUniqueId();
    /**
     * required string uniqueId = 1;
     */
    java.lang.String getUniqueId();
    /**
     * required string uniqueId = 1;
     */
    com.google.protobuf.ByteString
        getUniqueIdBytes();

    /**
     * required string indexName = 2;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 2;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 2;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * optional bytes document = 3;
     */
    boolean hasDocument();
    /**
     * optional bytes document = 3;
     */
    com.google.protobuf.ByteString getDocument();

    /**
     * repeated .Metadata metadata = 4;
     */
    java.util.List 
        getMetadataList();
    /**
     * repeated .Metadata metadata = 4;
     */
    org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index);
    /**
     * repeated .Metadata metadata = 4;
     */
    int getMetadataCount();
    /**
     * repeated .Metadata metadata = 4;
     */
    java.util.List 
        getMetadataOrBuilderList();
    /**
     * repeated .Metadata metadata = 4;
     */
    org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
        int index);

    /**
     * optional int64 timestamp = 5;
     */
    boolean hasTimestamp();
    /**
     * optional int64 timestamp = 5;
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code ResultDocument}
   */
  public static final class ResultDocument extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:ResultDocument)
      ResultDocumentOrBuilder {
    // Use ResultDocument.newBuilder() to construct.
    private ResultDocument(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ResultDocument(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ResultDocument defaultInstance;
    public static ResultDocument getDefaultInstance() {
      return defaultInstance;
    }

    public ResultDocument getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ResultDocument(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              uniqueId_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              indexName_ = bs;
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              document_ = input.readBytes();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                metadata_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              metadata_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.Metadata.PARSER, extensionRegistry));
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              timestamp_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          metadata_ = java.util.Collections.unmodifiableList(metadata_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ResultDocument_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ResultDocument_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.ResultDocument.class, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public ResultDocument parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ResultDocument(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int UNIQUEID_FIELD_NUMBER = 1;
    private java.lang.Object uniqueId_;
    /**
     * required string uniqueId = 1;
     */
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string uniqueId = 1;
     */
    public java.lang.String getUniqueId() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueId = 1;
     */
    public com.google.protobuf.ByteString
        getUniqueIdBytes() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXNAME_FIELD_NUMBER = 2;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 2;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string indexName = 2;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 2;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCUMENT_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString document_;
    /**
     * optional bytes document = 3;
     */
    public boolean hasDocument() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional bytes document = 3;
     */
    public com.google.protobuf.ByteString getDocument() {
      return document_;
    }

    public static final int METADATA_FIELD_NUMBER = 4;
    private java.util.List metadata_;
    /**
     * repeated .Metadata metadata = 4;
     */
    public java.util.List getMetadataList() {
      return metadata_;
    }
    /**
     * repeated .Metadata metadata = 4;
     */
    public java.util.List 
        getMetadataOrBuilderList() {
      return metadata_;
    }
    /**
     * repeated .Metadata metadata = 4;
     */
    public int getMetadataCount() {
      return metadata_.size();
    }
    /**
     * repeated .Metadata metadata = 4;
     */
    public org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index) {
      return metadata_.get(index);
    }
    /**
     * repeated .Metadata metadata = 4;
     */
    public org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
        int index) {
      return metadata_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * optional int64 timestamp = 5;
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional int64 timestamp = 5;
     */
    public long getTimestamp() {
      return timestamp_;
    }

    private void initFields() {
      uniqueId_ = "";
      indexName_ = "";
      document_ = com.google.protobuf.ByteString.EMPTY;
      metadata_ = java.util.Collections.emptyList();
      timestamp_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMetadataCount(); i++) {
        if (!getMetadata(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, document_);
      }
      for (int i = 0; i < metadata_.size(); i++) {
        output.writeMessage(4, metadata_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(5, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, document_);
      }
      for (int i = 0; i < metadata_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, metadata_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ResultDocument parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.ResultDocument prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ResultDocument}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:ResultDocument)
        org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ResultDocument_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ResultDocument_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.ResultDocument.class, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.ResultDocument.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        document_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (metadataBuilder_ == null) {
          metadata_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          metadataBuilder_.clear();
        }
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ResultDocument_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.ResultDocument getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.ResultDocument build() {
        org.lumongo.cluster.message.Lumongo.ResultDocument result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.ResultDocument buildPartial() {
        org.lumongo.cluster.message.Lumongo.ResultDocument result = new org.lumongo.cluster.message.Lumongo.ResultDocument(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uniqueId_ = uniqueId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.document_ = document_;
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            metadata_ = java.util.Collections.unmodifiableList(metadata_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.timestamp_ = timestamp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.ResultDocument) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.ResultDocument)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.ResultDocument other) {
        if (other == org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance()) return this;
        if (other.hasUniqueId()) {
          bitField0_ |= 0x00000001;
          uniqueId_ = other.uniqueId_;
          onChanged();
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000002;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasDocument()) {
          setDocument(other.getDocument());
        }
        if (metadataBuilder_ == null) {
          if (!other.metadata_.isEmpty()) {
            if (metadata_.isEmpty()) {
              metadata_ = other.metadata_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureMetadataIsMutable();
              metadata_.addAll(other.metadata_);
            }
            onChanged();
          }
        } else {
          if (!other.metadata_.isEmpty()) {
            if (metadataBuilder_.isEmpty()) {
              metadataBuilder_.dispose();
              metadataBuilder_ = null;
              metadata_ = other.metadata_;
              bitField0_ = (bitField0_ & ~0x00000008);
              metadataBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMetadataFieldBuilder() : null;
            } else {
              metadataBuilder_.addAllMessages(other.metadata_);
            }
          }
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUniqueId()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        for (int i = 0; i < getMetadataCount(); i++) {
          if (!getMetadata(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.ResultDocument parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.ResultDocument) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object uniqueId_ = "";
      /**
       * required string uniqueId = 1;
       */
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string uniqueId = 1;
       */
      public java.lang.String getUniqueId() {
        java.lang.Object ref = uniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public com.google.protobuf.ByteString
          getUniqueIdBytes() {
        java.lang.Object ref = uniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueId_ = getDefaultInstance().getUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 2;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string indexName = 2;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString document_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes document = 3;
       */
      public boolean hasDocument() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional bytes document = 3;
       */
      public com.google.protobuf.ByteString getDocument() {
        return document_;
      }
      /**
       * optional bytes document = 3;
       */
      public Builder setDocument(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        document_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes document = 3;
       */
      public Builder clearDocument() {
        bitField0_ = (bitField0_ & ~0x00000004);
        document_ = getDefaultInstance().getDocument();
        onChanged();
        return this;
      }

      private java.util.List metadata_ =
        java.util.Collections.emptyList();
      private void ensureMetadataIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          metadata_ = new java.util.ArrayList(metadata_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder> metadataBuilder_;

      /**
       * repeated .Metadata metadata = 4;
       */
      public java.util.List getMetadataList() {
        if (metadataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metadata_);
        } else {
          return metadataBuilder_.getMessageList();
        }
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public int getMetadataCount() {
        if (metadataBuilder_ == null) {
          return metadata_.size();
        } else {
          return metadataBuilder_.getCount();
        }
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index) {
        if (metadataBuilder_ == null) {
          return metadata_.get(index);
        } else {
          return metadataBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder setMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.set(index, value);
          onChanged();
        } else {
          metadataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder setMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.set(index, builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder addMetadata(org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.add(value);
          onChanged();
        } else {
          metadataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder addMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.add(index, value);
          onChanged();
        } else {
          metadataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder addMetadata(
          org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.add(builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder addMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.add(index, builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder addAllMetadata(
          java.lang.Iterable values) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, metadata_);
          onChanged();
        } else {
          metadataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public Builder removeMetadata(int index) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.remove(index);
          onChanged();
        } else {
          metadataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder getMetadataBuilder(
          int index) {
        return getMetadataFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
          int index) {
        if (metadataBuilder_ == null) {
          return metadata_.get(index);  } else {
          return metadataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public java.util.List 
           getMetadataOrBuilderList() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metadata_);
        }
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder addMetadataBuilder() {
        return getMetadataFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance());
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder addMetadataBuilder(
          int index) {
        return getMetadataFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance());
      }
      /**
       * repeated .Metadata metadata = 4;
       */
      public java.util.List 
           getMetadataBuilderList() {
        return getMetadataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder>(
                  metadata_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private long timestamp_ ;
      /**
       * optional int64 timestamp = 5;
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional int64 timestamp = 5;
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * optional int64 timestamp = 5;
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000010;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 timestamp = 5;
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000010);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:ResultDocument)
    }

    static {
      defaultInstance = new ResultDocument(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ResultDocument)
  }

  public interface AssociatedDocumentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:AssociatedDocument)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string filename = 1;
     */
    boolean hasFilename();
    /**
     * required string filename = 1;
     */
    java.lang.String getFilename();
    /**
     * required string filename = 1;
     */
    com.google.protobuf.ByteString
        getFilenameBytes();

    /**
     * required string documentUniqueId = 2;
     */
    boolean hasDocumentUniqueId();
    /**
     * required string documentUniqueId = 2;
     */
    java.lang.String getDocumentUniqueId();
    /**
     * required string documentUniqueId = 2;
     */
    com.google.protobuf.ByteString
        getDocumentUniqueIdBytes();

    /**
     * required string indexName = 3;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 3;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 3;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * optional bytes document = 4;
     */
    boolean hasDocument();
    /**
     * optional bytes document = 4;
     */
    com.google.protobuf.ByteString getDocument();

    /**
     * optional bool compressed = 5 [default = false];
     */
    boolean hasCompressed();
    /**
     * optional bool compressed = 5 [default = false];
     */
    boolean getCompressed();

    /**
     * repeated .Metadata metadata = 6;
     */
    java.util.List 
        getMetadataList();
    /**
     * repeated .Metadata metadata = 6;
     */
    org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index);
    /**
     * repeated .Metadata metadata = 6;
     */
    int getMetadataCount();
    /**
     * repeated .Metadata metadata = 6;
     */
    java.util.List 
        getMetadataOrBuilderList();
    /**
     * repeated .Metadata metadata = 6;
     */
    org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
        int index);

    /**
     * optional int64 timestamp = 7;
     */
    boolean hasTimestamp();
    /**
     * optional int64 timestamp = 7;
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code AssociatedDocument}
   */
  public static final class AssociatedDocument extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:AssociatedDocument)
      AssociatedDocumentOrBuilder {
    // Use AssociatedDocument.newBuilder() to construct.
    private AssociatedDocument(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AssociatedDocument(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AssociatedDocument defaultInstance;
    public static AssociatedDocument getDefaultInstance() {
      return defaultInstance;
    }

    public AssociatedDocument getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AssociatedDocument(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              filename_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              documentUniqueId_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              indexName_ = bs;
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              document_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              compressed_ = input.readBool();
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                metadata_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              metadata_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.Metadata.PARSER, extensionRegistry));
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              timestamp_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          metadata_ = java.util.Collections.unmodifiableList(metadata_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_AssociatedDocument_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_AssociatedDocument_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.AssociatedDocument.class, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public AssociatedDocument parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AssociatedDocument(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FILENAME_FIELD_NUMBER = 1;
    private java.lang.Object filename_;
    /**
     * required string filename = 1;
     */
    public boolean hasFilename() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string filename = 1;
     */
    public java.lang.String getFilename() {
      java.lang.Object ref = filename_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          filename_ = s;
        }
        return s;
      }
    }
    /**
     * required string filename = 1;
     */
    public com.google.protobuf.ByteString
        getFilenameBytes() {
      java.lang.Object ref = filename_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        filename_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCUMENTUNIQUEID_FIELD_NUMBER = 2;
    private java.lang.Object documentUniqueId_;
    /**
     * required string documentUniqueId = 2;
     */
    public boolean hasDocumentUniqueId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string documentUniqueId = 2;
     */
    public java.lang.String getDocumentUniqueId() {
      java.lang.Object ref = documentUniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          documentUniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string documentUniqueId = 2;
     */
    public com.google.protobuf.ByteString
        getDocumentUniqueIdBytes() {
      java.lang.Object ref = documentUniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        documentUniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXNAME_FIELD_NUMBER = 3;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 3;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * required string indexName = 3;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 3;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCUMENT_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString document_;
    /**
     * optional bytes document = 4;
     */
    public boolean hasDocument() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bytes document = 4;
     */
    public com.google.protobuf.ByteString getDocument() {
      return document_;
    }

    public static final int COMPRESSED_FIELD_NUMBER = 5;
    private boolean compressed_;
    /**
     * optional bool compressed = 5 [default = false];
     */
    public boolean hasCompressed() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional bool compressed = 5 [default = false];
     */
    public boolean getCompressed() {
      return compressed_;
    }

    public static final int METADATA_FIELD_NUMBER = 6;
    private java.util.List metadata_;
    /**
     * repeated .Metadata metadata = 6;
     */
    public java.util.List getMetadataList() {
      return metadata_;
    }
    /**
     * repeated .Metadata metadata = 6;
     */
    public java.util.List 
        getMetadataOrBuilderList() {
      return metadata_;
    }
    /**
     * repeated .Metadata metadata = 6;
     */
    public int getMetadataCount() {
      return metadata_.size();
    }
    /**
     * repeated .Metadata metadata = 6;
     */
    public org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index) {
      return metadata_.get(index);
    }
    /**
     * repeated .Metadata metadata = 6;
     */
    public org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
        int index) {
      return metadata_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 7;
    private long timestamp_;
    /**
     * optional int64 timestamp = 7;
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional int64 timestamp = 7;
     */
    public long getTimestamp() {
      return timestamp_;
    }

    private void initFields() {
      filename_ = "";
      documentUniqueId_ = "";
      indexName_ = "";
      document_ = com.google.protobuf.ByteString.EMPTY;
      compressed_ = false;
      metadata_ = java.util.Collections.emptyList();
      timestamp_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFilename()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDocumentUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMetadataCount(); i++) {
        if (!getMetadata(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getFilenameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getDocumentUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, document_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, compressed_);
      }
      for (int i = 0; i < metadata_.size(); i++) {
        output.writeMessage(6, metadata_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(7, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getFilenameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getDocumentUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, document_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, compressed_);
      }
      for (int i = 0; i < metadata_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, metadata_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.AssociatedDocument parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.AssociatedDocument prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code AssociatedDocument}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:AssociatedDocument)
        org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_AssociatedDocument_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_AssociatedDocument_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.AssociatedDocument.class, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.AssociatedDocument.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        filename_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        documentUniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        document_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        compressed_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        if (metadataBuilder_ == null) {
          metadata_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          metadataBuilder_.clear();
        }
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_AssociatedDocument_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.AssociatedDocument getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.AssociatedDocument build() {
        org.lumongo.cluster.message.Lumongo.AssociatedDocument result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.AssociatedDocument buildPartial() {
        org.lumongo.cluster.message.Lumongo.AssociatedDocument result = new org.lumongo.cluster.message.Lumongo.AssociatedDocument(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.filename_ = filename_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.documentUniqueId_ = documentUniqueId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.document_ = document_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.compressed_ = compressed_;
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            metadata_ = java.util.Collections.unmodifiableList(metadata_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.timestamp_ = timestamp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.AssociatedDocument) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.AssociatedDocument)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.AssociatedDocument other) {
        if (other == org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance()) return this;
        if (other.hasFilename()) {
          bitField0_ |= 0x00000001;
          filename_ = other.filename_;
          onChanged();
        }
        if (other.hasDocumentUniqueId()) {
          bitField0_ |= 0x00000002;
          documentUniqueId_ = other.documentUniqueId_;
          onChanged();
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000004;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasDocument()) {
          setDocument(other.getDocument());
        }
        if (other.hasCompressed()) {
          setCompressed(other.getCompressed());
        }
        if (metadataBuilder_ == null) {
          if (!other.metadata_.isEmpty()) {
            if (metadata_.isEmpty()) {
              metadata_ = other.metadata_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureMetadataIsMutable();
              metadata_.addAll(other.metadata_);
            }
            onChanged();
          }
        } else {
          if (!other.metadata_.isEmpty()) {
            if (metadataBuilder_.isEmpty()) {
              metadataBuilder_.dispose();
              metadataBuilder_ = null;
              metadata_ = other.metadata_;
              bitField0_ = (bitField0_ & ~0x00000020);
              metadataBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMetadataFieldBuilder() : null;
            } else {
              metadataBuilder_.addAllMessages(other.metadata_);
            }
          }
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFilename()) {
          
          return false;
        }
        if (!hasDocumentUniqueId()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        for (int i = 0; i < getMetadataCount(); i++) {
          if (!getMetadata(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.AssociatedDocument parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.AssociatedDocument) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object filename_ = "";
      /**
       * required string filename = 1;
       */
      public boolean hasFilename() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string filename = 1;
       */
      public java.lang.String getFilename() {
        java.lang.Object ref = filename_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            filename_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string filename = 1;
       */
      public com.google.protobuf.ByteString
          getFilenameBytes() {
        java.lang.Object ref = filename_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          filename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string filename = 1;
       */
      public Builder setFilename(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        filename_ = value;
        onChanged();
        return this;
      }
      /**
       * required string filename = 1;
       */
      public Builder clearFilename() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filename_ = getDefaultInstance().getFilename();
        onChanged();
        return this;
      }
      /**
       * required string filename = 1;
       */
      public Builder setFilenameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        filename_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object documentUniqueId_ = "";
      /**
       * required string documentUniqueId = 2;
       */
      public boolean hasDocumentUniqueId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string documentUniqueId = 2;
       */
      public java.lang.String getDocumentUniqueId() {
        java.lang.Object ref = documentUniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            documentUniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string documentUniqueId = 2;
       */
      public com.google.protobuf.ByteString
          getDocumentUniqueIdBytes() {
        java.lang.Object ref = documentUniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          documentUniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string documentUniqueId = 2;
       */
      public Builder setDocumentUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        documentUniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string documentUniqueId = 2;
       */
      public Builder clearDocumentUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        documentUniqueId_ = getDefaultInstance().getDocumentUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string documentUniqueId = 2;
       */
      public Builder setDocumentUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        documentUniqueId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 3;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required string indexName = 3;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 3;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 3;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 3;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 3;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        indexName_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString document_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes document = 4;
       */
      public boolean hasDocument() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bytes document = 4;
       */
      public com.google.protobuf.ByteString getDocument() {
        return document_;
      }
      /**
       * optional bytes document = 4;
       */
      public Builder setDocument(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        document_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes document = 4;
       */
      public Builder clearDocument() {
        bitField0_ = (bitField0_ & ~0x00000008);
        document_ = getDefaultInstance().getDocument();
        onChanged();
        return this;
      }

      private boolean compressed_ ;
      /**
       * optional bool compressed = 5 [default = false];
       */
      public boolean hasCompressed() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bool compressed = 5 [default = false];
       */
      public boolean getCompressed() {
        return compressed_;
      }
      /**
       * optional bool compressed = 5 [default = false];
       */
      public Builder setCompressed(boolean value) {
        bitField0_ |= 0x00000010;
        compressed_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool compressed = 5 [default = false];
       */
      public Builder clearCompressed() {
        bitField0_ = (bitField0_ & ~0x00000010);
        compressed_ = false;
        onChanged();
        return this;
      }

      private java.util.List metadata_ =
        java.util.Collections.emptyList();
      private void ensureMetadataIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          metadata_ = new java.util.ArrayList(metadata_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder> metadataBuilder_;

      /**
       * repeated .Metadata metadata = 6;
       */
      public java.util.List getMetadataList() {
        if (metadataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metadata_);
        } else {
          return metadataBuilder_.getMessageList();
        }
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public int getMetadataCount() {
        if (metadataBuilder_ == null) {
          return metadata_.size();
        } else {
          return metadataBuilder_.getCount();
        }
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata getMetadata(int index) {
        if (metadataBuilder_ == null) {
          return metadata_.get(index);
        } else {
          return metadataBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder setMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.set(index, value);
          onChanged();
        } else {
          metadataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder setMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.set(index, builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder addMetadata(org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.add(value);
          onChanged();
        } else {
          metadataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder addMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetadataIsMutable();
          metadata_.add(index, value);
          onChanged();
        } else {
          metadataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder addMetadata(
          org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.add(builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder addMetadata(
          int index, org.lumongo.cluster.message.Lumongo.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.add(index, builderForValue.build());
          onChanged();
        } else {
          metadataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder addAllMetadata(
          java.lang.Iterable values) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, metadata_);
          onChanged();
        } else {
          metadataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public Builder removeMetadata(int index) {
        if (metadataBuilder_ == null) {
          ensureMetadataIsMutable();
          metadata_.remove(index);
          onChanged();
        } else {
          metadataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder getMetadataBuilder(
          int index) {
        return getMetadataFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public org.lumongo.cluster.message.Lumongo.MetadataOrBuilder getMetadataOrBuilder(
          int index) {
        if (metadataBuilder_ == null) {
          return metadata_.get(index);  } else {
          return metadataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public java.util.List 
           getMetadataOrBuilderList() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metadata_);
        }
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder addMetadataBuilder() {
        return getMetadataFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance());
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public org.lumongo.cluster.message.Lumongo.Metadata.Builder addMetadataBuilder(
          int index) {
        return getMetadataFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance());
      }
      /**
       * repeated .Metadata metadata = 6;
       */
      public java.util.List 
           getMetadataBuilderList() {
        return getMetadataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.Metadata, org.lumongo.cluster.message.Lumongo.Metadata.Builder, org.lumongo.cluster.message.Lumongo.MetadataOrBuilder>(
                  metadata_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private long timestamp_ ;
      /**
       * optional int64 timestamp = 7;
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional int64 timestamp = 7;
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * optional int64 timestamp = 7;
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000040;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 timestamp = 7;
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000040);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:AssociatedDocument)
    }

    static {
      defaultInstance = new AssociatedDocument(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:AssociatedDocument)
  }

  public interface MetadataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Metadata)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string key = 1;
     */
    boolean hasKey();
    /**
     * required string key = 1;
     */
    java.lang.String getKey();
    /**
     * required string key = 1;
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * required string value = 2;
     */
    boolean hasValue();
    /**
     * required string value = 2;
     */
    java.lang.String getValue();
    /**
     * required string value = 2;
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code Metadata}
   */
  public static final class Metadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:Metadata)
      MetadataOrBuilder {
    // Use Metadata.newBuilder() to construct.
    private Metadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Metadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Metadata defaultInstance;
    public static Metadata getDefaultInstance() {
      return defaultInstance;
    }

    public Metadata getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Metadata(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              value_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_Metadata_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_Metadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.Metadata.class, org.lumongo.cluster.message.Lumongo.Metadata.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public Metadata parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Metadata(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private java.lang.Object key_;
    /**
     * required string key = 1;
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string key = 1;
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * required string key = 1;
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    /**
     * required string value = 2;
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string value = 2;
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * required string value = 2;
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      key_ = "";
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.Metadata parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.Metadata prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Metadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:Metadata)
        org.lumongo.cluster.message.Lumongo.MetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Metadata_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Metadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.Metadata.class, org.lumongo.cluster.message.Lumongo.Metadata.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.Metadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_Metadata_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.Metadata getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.Metadata build() {
        org.lumongo.cluster.message.Lumongo.Metadata result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.Metadata buildPartial() {
        org.lumongo.cluster.message.Lumongo.Metadata result = new org.lumongo.cluster.message.Lumongo.Metadata(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.Metadata) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.Metadata)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.Metadata other) {
        if (other == org.lumongo.cluster.message.Lumongo.Metadata.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKey()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.Metadata parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.Metadata) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * required string key = 1;
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string key = 1;
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string key = 1;
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string key = 1;
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * required string key = 1;
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * required string key = 1;
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * required string value = 2;
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string value = 2;
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string value = 2;
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string value = 2;
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * required string value = 2;
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * required string value = 2;
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Metadata)
    }

    static {
      defaultInstance = new Metadata(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Metadata)
  }

  public interface ScoredResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ScoredResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string uniqueId = 1;
     */
    boolean hasUniqueId();
    /**
     * required string uniqueId = 1;
     */
    java.lang.String getUniqueId();
    /**
     * required string uniqueId = 1;
     */
    com.google.protobuf.ByteString
        getUniqueIdBytes();

    /**
     * required float score = 2;
     */
    boolean hasScore();
    /**
     * required float score = 2;
     */
    float getScore();

    /**
     * required uint32 docId = 3;
     */
    boolean hasDocId();
    /**
     * required uint32 docId = 3;
     */
    int getDocId();

    /**
     * required string indexName = 4;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 4;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 4;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required uint32 segment = 5;
     */
    boolean hasSegment();
    /**
     * required uint32 segment = 5;
     */
    int getSegment();

    /**
     * required uint32 resultIndex = 6;
     */
    boolean hasResultIndex();
    /**
     * required uint32 resultIndex = 6;
     */
    int getResultIndex();

    /**
     * repeated string sortTerm = 7;
     */
    com.google.protobuf.ProtocolStringList
        getSortTermList();
    /**
     * repeated string sortTerm = 7;
     */
    int getSortTermCount();
    /**
     * repeated string sortTerm = 7;
     */
    java.lang.String getSortTerm(int index);
    /**
     * repeated string sortTerm = 7;
     */
    com.google.protobuf.ByteString
        getSortTermBytes(int index);

    /**
     * repeated int32 sortInteger = 8;
     */
    java.util.List getSortIntegerList();
    /**
     * repeated int32 sortInteger = 8;
     */
    int getSortIntegerCount();
    /**
     * repeated int32 sortInteger = 8;
     */
    int getSortInteger(int index);

    /**
     * repeated int64 sortLong = 9;
     */
    java.util.List getSortLongList();
    /**
     * repeated int64 sortLong = 9;
     */
    int getSortLongCount();
    /**
     * repeated int64 sortLong = 9;
     */
    long getSortLong(int index);

    /**
     * repeated float sortFloat = 10;
     */
    java.util.List getSortFloatList();
    /**
     * repeated float sortFloat = 10;
     */
    int getSortFloatCount();
    /**
     * repeated float sortFloat = 10;
     */
    float getSortFloat(int index);

    /**
     * repeated double sortDouble = 11;
     */
    java.util.List getSortDoubleList();
    /**
     * repeated double sortDouble = 11;
     */
    int getSortDoubleCount();
    /**
     * repeated double sortDouble = 11;
     */
    double getSortDouble(int index);

    /**
     * repeated int64 sortDate = 12;
     */
    java.util.List getSortDateList();
    /**
     * repeated int64 sortDate = 12;
     */
    int getSortDateCount();
    /**
     * repeated int64 sortDate = 12;
     */
    long getSortDate(int index);

    /**
     * required int64 timestamp = 13;
     */
    boolean hasTimestamp();
    /**
     * required int64 timestamp = 13;
     */
    long getTimestamp();

    /**
     * optional .ResultDocument resultDocument = 14;
     */
    boolean hasResultDocument();
    /**
     * optional .ResultDocument resultDocument = 14;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument();
    /**
     * optional .ResultDocument resultDocument = 14;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder();
  }
  /**
   * Protobuf type {@code ScoredResult}
   */
  public static final class ScoredResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:ScoredResult)
      ScoredResultOrBuilder {
    // Use ScoredResult.newBuilder() to construct.
    private ScoredResult(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ScoredResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ScoredResult defaultInstance;
    public static ScoredResult getDefaultInstance() {
      return defaultInstance;
    }

    public ScoredResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ScoredResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              uniqueId_ = bs;
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              score_ = input.readFloat();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              docId_ = input.readUInt32();
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              indexName_ = bs;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              segment_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              resultIndex_ = input.readUInt32();
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                sortTerm_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              sortTerm_.add(bs);
              break;
            }
            case 64: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                sortInteger_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000080;
              }
              sortInteger_.add(input.readInt32());
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                sortInteger_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000080;
              }
              while (input.getBytesUntilLimit() > 0) {
                sortInteger_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 72: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                sortLong_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000100;
              }
              sortLong_.add(input.readInt64());
              break;
            }
            case 74: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                sortLong_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000100;
              }
              while (input.getBytesUntilLimit() > 0) {
                sortLong_.add(input.readInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 85: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                sortFloat_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000200;
              }
              sortFloat_.add(input.readFloat());
              break;
            }
            case 82: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200) && input.getBytesUntilLimit() > 0) {
                sortFloat_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000200;
              }
              while (input.getBytesUntilLimit() > 0) {
                sortFloat_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 89: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                sortDouble_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000400;
              }
              sortDouble_.add(input.readDouble());
              break;
            }
            case 90: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                sortDouble_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000400;
              }
              while (input.getBytesUntilLimit() > 0) {
                sortDouble_.add(input.readDouble());
              }
              input.popLimit(limit);
              break;
            }
            case 96: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                sortDate_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000800;
              }
              sortDate_.add(input.readInt64());
              break;
            }
            case 98: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800) && input.getBytesUntilLimit() > 0) {
                sortDate_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000800;
              }
              while (input.getBytesUntilLimit() > 0) {
                sortDate_.add(input.readInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 104: {
              bitField0_ |= 0x00000040;
              timestamp_ = input.readInt64();
              break;
            }
            case 114: {
              org.lumongo.cluster.message.Lumongo.ResultDocument.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = resultDocument_.toBuilder();
              }
              resultDocument_ = input.readMessage(org.lumongo.cluster.message.Lumongo.ResultDocument.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(resultDocument_);
                resultDocument_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          sortTerm_ = sortTerm_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          sortInteger_ = java.util.Collections.unmodifiableList(sortInteger_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          sortLong_ = java.util.Collections.unmodifiableList(sortLong_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          sortFloat_ = java.util.Collections.unmodifiableList(sortFloat_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          sortDouble_ = java.util.Collections.unmodifiableList(sortDouble_);
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          sortDate_ = java.util.Collections.unmodifiableList(sortDate_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ScoredResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_ScoredResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.ScoredResult.class, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public ScoredResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ScoredResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int UNIQUEID_FIELD_NUMBER = 1;
    private java.lang.Object uniqueId_;
    /**
     * required string uniqueId = 1;
     */
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string uniqueId = 1;
     */
    public java.lang.String getUniqueId() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueId = 1;
     */
    public com.google.protobuf.ByteString
        getUniqueIdBytes() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCORE_FIELD_NUMBER = 2;
    private float score_;
    /**
     * required float score = 2;
     */
    public boolean hasScore() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required float score = 2;
     */
    public float getScore() {
      return score_;
    }

    public static final int DOCID_FIELD_NUMBER = 3;
    private int docId_;
    /**
     * required uint32 docId = 3;
     */
    public boolean hasDocId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * required uint32 docId = 3;
     */
    public int getDocId() {
      return docId_;
    }

    public static final int INDEXNAME_FIELD_NUMBER = 4;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 4;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * required string indexName = 4;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 4;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SEGMENT_FIELD_NUMBER = 5;
    private int segment_;
    /**
     * required uint32 segment = 5;
     */
    public boolean hasSegment() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * required uint32 segment = 5;
     */
    public int getSegment() {
      return segment_;
    }

    public static final int RESULTINDEX_FIELD_NUMBER = 6;
    private int resultIndex_;
    /**
     * required uint32 resultIndex = 6;
     */
    public boolean hasResultIndex() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * required uint32 resultIndex = 6;
     */
    public int getResultIndex() {
      return resultIndex_;
    }

    public static final int SORTTERM_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList sortTerm_;
    /**
     * repeated string sortTerm = 7;
     */
    public com.google.protobuf.ProtocolStringList
        getSortTermList() {
      return sortTerm_;
    }
    /**
     * repeated string sortTerm = 7;
     */
    public int getSortTermCount() {
      return sortTerm_.size();
    }
    /**
     * repeated string sortTerm = 7;
     */
    public java.lang.String getSortTerm(int index) {
      return sortTerm_.get(index);
    }
    /**
     * repeated string sortTerm = 7;
     */
    public com.google.protobuf.ByteString
        getSortTermBytes(int index) {
      return sortTerm_.getByteString(index);
    }

    public static final int SORTINTEGER_FIELD_NUMBER = 8;
    private java.util.List sortInteger_;
    /**
     * repeated int32 sortInteger = 8;
     */
    public java.util.List
        getSortIntegerList() {
      return sortInteger_;
    }
    /**
     * repeated int32 sortInteger = 8;
     */
    public int getSortIntegerCount() {
      return sortInteger_.size();
    }
    /**
     * repeated int32 sortInteger = 8;
     */
    public int getSortInteger(int index) {
      return sortInteger_.get(index);
    }

    public static final int SORTLONG_FIELD_NUMBER = 9;
    private java.util.List sortLong_;
    /**
     * repeated int64 sortLong = 9;
     */
    public java.util.List
        getSortLongList() {
      return sortLong_;
    }
    /**
     * repeated int64 sortLong = 9;
     */
    public int getSortLongCount() {
      return sortLong_.size();
    }
    /**
     * repeated int64 sortLong = 9;
     */
    public long getSortLong(int index) {
      return sortLong_.get(index);
    }

    public static final int SORTFLOAT_FIELD_NUMBER = 10;
    private java.util.List sortFloat_;
    /**
     * repeated float sortFloat = 10;
     */
    public java.util.List
        getSortFloatList() {
      return sortFloat_;
    }
    /**
     * repeated float sortFloat = 10;
     */
    public int getSortFloatCount() {
      return sortFloat_.size();
    }
    /**
     * repeated float sortFloat = 10;
     */
    public float getSortFloat(int index) {
      return sortFloat_.get(index);
    }

    public static final int SORTDOUBLE_FIELD_NUMBER = 11;
    private java.util.List sortDouble_;
    /**
     * repeated double sortDouble = 11;
     */
    public java.util.List
        getSortDoubleList() {
      return sortDouble_;
    }
    /**
     * repeated double sortDouble = 11;
     */
    public int getSortDoubleCount() {
      return sortDouble_.size();
    }
    /**
     * repeated double sortDouble = 11;
     */
    public double getSortDouble(int index) {
      return sortDouble_.get(index);
    }

    public static final int SORTDATE_FIELD_NUMBER = 12;
    private java.util.List sortDate_;
    /**
     * repeated int64 sortDate = 12;
     */
    public java.util.List
        getSortDateList() {
      return sortDate_;
    }
    /**
     * repeated int64 sortDate = 12;
     */
    public int getSortDateCount() {
      return sortDate_.size();
    }
    /**
     * repeated int64 sortDate = 12;
     */
    public long getSortDate(int index) {
      return sortDate_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 13;
    private long timestamp_;
    /**
     * required int64 timestamp = 13;
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * required int64 timestamp = 13;
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int RESULTDOCUMENT_FIELD_NUMBER = 14;
    private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_;
    /**
     * optional .ResultDocument resultDocument = 14;
     */
    public boolean hasResultDocument() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional .ResultDocument resultDocument = 14;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
      return resultDocument_;
    }
    /**
     * optional .ResultDocument resultDocument = 14;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
      return resultDocument_;
    }

    private void initFields() {
      uniqueId_ = "";
      score_ = 0F;
      docId_ = 0;
      indexName_ = "";
      segment_ = 0;
      resultIndex_ = 0;
      sortTerm_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      sortInteger_ = java.util.Collections.emptyList();
      sortLong_ = java.util.Collections.emptyList();
      sortFloat_ = java.util.Collections.emptyList();
      sortDouble_ = java.util.Collections.emptyList();
      sortDate_ = java.util.Collections.emptyList();
      timestamp_ = 0L;
      resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasScore()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDocId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSegment()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasResultIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTimestamp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasResultDocument()) {
        if (!getResultDocument().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFloat(2, score_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, docId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, segment_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt32(6, resultIndex_);
      }
      for (int i = 0; i < sortTerm_.size(); i++) {
        output.writeBytes(7, sortTerm_.getByteString(i));
      }
      for (int i = 0; i < sortInteger_.size(); i++) {
        output.writeInt32(8, sortInteger_.get(i));
      }
      for (int i = 0; i < sortLong_.size(); i++) {
        output.writeInt64(9, sortLong_.get(i));
      }
      for (int i = 0; i < sortFloat_.size(); i++) {
        output.writeFloat(10, sortFloat_.get(i));
      }
      for (int i = 0; i < sortDouble_.size(); i++) {
        output.writeDouble(11, sortDouble_.get(i));
      }
      for (int i = 0; i < sortDate_.size(); i++) {
        output.writeInt64(12, sortDate_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt64(13, timestamp_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(14, resultDocument_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, score_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, docId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, segment_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, resultIndex_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sortTerm_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(sortTerm_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getSortTermList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sortInteger_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(sortInteger_.get(i));
        }
        size += dataSize;
        size += 1 * getSortIntegerList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sortLong_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(sortLong_.get(i));
        }
        size += dataSize;
        size += 1 * getSortLongList().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getSortFloatList().size();
        size += dataSize;
        size += 1 * getSortFloatList().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getSortDoubleList().size();
        size += dataSize;
        size += 1 * getSortDoubleList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sortDate_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(sortDate_.get(i));
        }
        size += dataSize;
        size += 1 * getSortDateList().size();
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(13, timestamp_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, resultDocument_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.ScoredResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.ScoredResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ScoredResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:ScoredResult)
        org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ScoredResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ScoredResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.ScoredResult.class, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.ScoredResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getResultDocumentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        score_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000002);
        docId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        segment_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        resultIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        sortTerm_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        sortInteger_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        sortLong_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        sortFloat_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        sortDouble_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        sortDate_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00001000);
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_ScoredResult_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.ScoredResult getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.ScoredResult build() {
        org.lumongo.cluster.message.Lumongo.ScoredResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.ScoredResult buildPartial() {
        org.lumongo.cluster.message.Lumongo.ScoredResult result = new org.lumongo.cluster.message.Lumongo.ScoredResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uniqueId_ = uniqueId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.score_ = score_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.docId_ = docId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.segment_ = segment_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.resultIndex_ = resultIndex_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          sortTerm_ = sortTerm_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.sortTerm_ = sortTerm_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          sortInteger_ = java.util.Collections.unmodifiableList(sortInteger_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.sortInteger_ = sortInteger_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          sortLong_ = java.util.Collections.unmodifiableList(sortLong_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.sortLong_ = sortLong_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          sortFloat_ = java.util.Collections.unmodifiableList(sortFloat_);
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.sortFloat_ = sortFloat_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          sortDouble_ = java.util.Collections.unmodifiableList(sortDouble_);
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.sortDouble_ = sortDouble_;
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          sortDate_ = java.util.Collections.unmodifiableList(sortDate_);
          bitField0_ = (bitField0_ & ~0x00000800);
        }
        result.sortDate_ = sortDate_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000040;
        }
        result.timestamp_ = timestamp_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00000080;
        }
        if (resultDocumentBuilder_ == null) {
          result.resultDocument_ = resultDocument_;
        } else {
          result.resultDocument_ = resultDocumentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.ScoredResult) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.ScoredResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.ScoredResult other) {
        if (other == org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance()) return this;
        if (other.hasUniqueId()) {
          bitField0_ |= 0x00000001;
          uniqueId_ = other.uniqueId_;
          onChanged();
        }
        if (other.hasScore()) {
          setScore(other.getScore());
        }
        if (other.hasDocId()) {
          setDocId(other.getDocId());
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000008;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasSegment()) {
          setSegment(other.getSegment());
        }
        if (other.hasResultIndex()) {
          setResultIndex(other.getResultIndex());
        }
        if (!other.sortTerm_.isEmpty()) {
          if (sortTerm_.isEmpty()) {
            sortTerm_ = other.sortTerm_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureSortTermIsMutable();
            sortTerm_.addAll(other.sortTerm_);
          }
          onChanged();
        }
        if (!other.sortInteger_.isEmpty()) {
          if (sortInteger_.isEmpty()) {
            sortInteger_ = other.sortInteger_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureSortIntegerIsMutable();
            sortInteger_.addAll(other.sortInteger_);
          }
          onChanged();
        }
        if (!other.sortLong_.isEmpty()) {
          if (sortLong_.isEmpty()) {
            sortLong_ = other.sortLong_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureSortLongIsMutable();
            sortLong_.addAll(other.sortLong_);
          }
          onChanged();
        }
        if (!other.sortFloat_.isEmpty()) {
          if (sortFloat_.isEmpty()) {
            sortFloat_ = other.sortFloat_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureSortFloatIsMutable();
            sortFloat_.addAll(other.sortFloat_);
          }
          onChanged();
        }
        if (!other.sortDouble_.isEmpty()) {
          if (sortDouble_.isEmpty()) {
            sortDouble_ = other.sortDouble_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureSortDoubleIsMutable();
            sortDouble_.addAll(other.sortDouble_);
          }
          onChanged();
        }
        if (!other.sortDate_.isEmpty()) {
          if (sortDate_.isEmpty()) {
            sortDate_ = other.sortDate_;
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            ensureSortDateIsMutable();
            sortDate_.addAll(other.sortDate_);
          }
          onChanged();
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasResultDocument()) {
          mergeResultDocument(other.getResultDocument());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUniqueId()) {
          
          return false;
        }
        if (!hasScore()) {
          
          return false;
        }
        if (!hasDocId()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasSegment()) {
          
          return false;
        }
        if (!hasResultIndex()) {
          
          return false;
        }
        if (!hasTimestamp()) {
          
          return false;
        }
        if (hasResultDocument()) {
          if (!getResultDocument().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.ScoredResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.ScoredResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object uniqueId_ = "";
      /**
       * required string uniqueId = 1;
       */
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string uniqueId = 1;
       */
      public java.lang.String getUniqueId() {
        java.lang.Object ref = uniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public com.google.protobuf.ByteString
          getUniqueIdBytes() {
        java.lang.Object ref = uniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueId_ = getDefaultInstance().getUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }

      private float score_ ;
      /**
       * required float score = 2;
       */
      public boolean hasScore() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required float score = 2;
       */
      public float getScore() {
        return score_;
      }
      /**
       * required float score = 2;
       */
      public Builder setScore(float value) {
        bitField0_ |= 0x00000002;
        score_ = value;
        onChanged();
        return this;
      }
      /**
       * required float score = 2;
       */
      public Builder clearScore() {
        bitField0_ = (bitField0_ & ~0x00000002);
        score_ = 0F;
        onChanged();
        return this;
      }

      private int docId_ ;
      /**
       * required uint32 docId = 3;
       */
      public boolean hasDocId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required uint32 docId = 3;
       */
      public int getDocId() {
        return docId_;
      }
      /**
       * required uint32 docId = 3;
       */
      public Builder setDocId(int value) {
        bitField0_ |= 0x00000004;
        docId_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 docId = 3;
       */
      public Builder clearDocId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        docId_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 4;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * required string indexName = 4;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 4;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 4;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 4;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000008);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 4;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        indexName_ = value;
        onChanged();
        return this;
      }

      private int segment_ ;
      /**
       * required uint32 segment = 5;
       */
      public boolean hasSegment() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * required uint32 segment = 5;
       */
      public int getSegment() {
        return segment_;
      }
      /**
       * required uint32 segment = 5;
       */
      public Builder setSegment(int value) {
        bitField0_ |= 0x00000010;
        segment_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 segment = 5;
       */
      public Builder clearSegment() {
        bitField0_ = (bitField0_ & ~0x00000010);
        segment_ = 0;
        onChanged();
        return this;
      }

      private int resultIndex_ ;
      /**
       * required uint32 resultIndex = 6;
       */
      public boolean hasResultIndex() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * required uint32 resultIndex = 6;
       */
      public int getResultIndex() {
        return resultIndex_;
      }
      /**
       * required uint32 resultIndex = 6;
       */
      public Builder setResultIndex(int value) {
        bitField0_ |= 0x00000020;
        resultIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 resultIndex = 6;
       */
      public Builder clearResultIndex() {
        bitField0_ = (bitField0_ & ~0x00000020);
        resultIndex_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList sortTerm_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSortTermIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          sortTerm_ = new com.google.protobuf.LazyStringArrayList(sortTerm_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * repeated string sortTerm = 7;
       */
      public com.google.protobuf.ProtocolStringList
          getSortTermList() {
        return sortTerm_.getUnmodifiableView();
      }
      /**
       * repeated string sortTerm = 7;
       */
      public int getSortTermCount() {
        return sortTerm_.size();
      }
      /**
       * repeated string sortTerm = 7;
       */
      public java.lang.String getSortTerm(int index) {
        return sortTerm_.get(index);
      }
      /**
       * repeated string sortTerm = 7;
       */
      public com.google.protobuf.ByteString
          getSortTermBytes(int index) {
        return sortTerm_.getByteString(index);
      }
      /**
       * repeated string sortTerm = 7;
       */
      public Builder setSortTerm(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSortTermIsMutable();
        sortTerm_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string sortTerm = 7;
       */
      public Builder addSortTerm(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSortTermIsMutable();
        sortTerm_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string sortTerm = 7;
       */
      public Builder addAllSortTerm(
          java.lang.Iterable values) {
        ensureSortTermIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortTerm_);
        onChanged();
        return this;
      }
      /**
       * repeated string sortTerm = 7;
       */
      public Builder clearSortTerm() {
        sortTerm_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * repeated string sortTerm = 7;
       */
      public Builder addSortTermBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSortTermIsMutable();
        sortTerm_.add(value);
        onChanged();
        return this;
      }

      private java.util.List sortInteger_ = java.util.Collections.emptyList();
      private void ensureSortIntegerIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          sortInteger_ = new java.util.ArrayList(sortInteger_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public java.util.List
          getSortIntegerList() {
        return java.util.Collections.unmodifiableList(sortInteger_);
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public int getSortIntegerCount() {
        return sortInteger_.size();
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public int getSortInteger(int index) {
        return sortInteger_.get(index);
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public Builder setSortInteger(
          int index, int value) {
        ensureSortIntegerIsMutable();
        sortInteger_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public Builder addSortInteger(int value) {
        ensureSortIntegerIsMutable();
        sortInteger_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public Builder addAllSortInteger(
          java.lang.Iterable values) {
        ensureSortIntegerIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortInteger_);
        onChanged();
        return this;
      }
      /**
       * repeated int32 sortInteger = 8;
       */
      public Builder clearSortInteger() {
        sortInteger_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private java.util.List sortLong_ = java.util.Collections.emptyList();
      private void ensureSortLongIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          sortLong_ = new java.util.ArrayList(sortLong_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public java.util.List
          getSortLongList() {
        return java.util.Collections.unmodifiableList(sortLong_);
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public int getSortLongCount() {
        return sortLong_.size();
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public long getSortLong(int index) {
        return sortLong_.get(index);
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public Builder setSortLong(
          int index, long value) {
        ensureSortLongIsMutable();
        sortLong_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public Builder addSortLong(long value) {
        ensureSortLongIsMutable();
        sortLong_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public Builder addAllSortLong(
          java.lang.Iterable values) {
        ensureSortLongIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortLong_);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortLong = 9;
       */
      public Builder clearSortLong() {
        sortLong_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }

      private java.util.List sortFloat_ = java.util.Collections.emptyList();
      private void ensureSortFloatIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          sortFloat_ = new java.util.ArrayList(sortFloat_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * repeated float sortFloat = 10;
       */
      public java.util.List
          getSortFloatList() {
        return java.util.Collections.unmodifiableList(sortFloat_);
      }
      /**
       * repeated float sortFloat = 10;
       */
      public int getSortFloatCount() {
        return sortFloat_.size();
      }
      /**
       * repeated float sortFloat = 10;
       */
      public float getSortFloat(int index) {
        return sortFloat_.get(index);
      }
      /**
       * repeated float sortFloat = 10;
       */
      public Builder setSortFloat(
          int index, float value) {
        ensureSortFloatIsMutable();
        sortFloat_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float sortFloat = 10;
       */
      public Builder addSortFloat(float value) {
        ensureSortFloatIsMutable();
        sortFloat_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float sortFloat = 10;
       */
      public Builder addAllSortFloat(
          java.lang.Iterable values) {
        ensureSortFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortFloat_);
        onChanged();
        return this;
      }
      /**
       * repeated float sortFloat = 10;
       */
      public Builder clearSortFloat() {
        sortFloat_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }

      private java.util.List sortDouble_ = java.util.Collections.emptyList();
      private void ensureSortDoubleIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          sortDouble_ = new java.util.ArrayList(sortDouble_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * repeated double sortDouble = 11;
       */
      public java.util.List
          getSortDoubleList() {
        return java.util.Collections.unmodifiableList(sortDouble_);
      }
      /**
       * repeated double sortDouble = 11;
       */
      public int getSortDoubleCount() {
        return sortDouble_.size();
      }
      /**
       * repeated double sortDouble = 11;
       */
      public double getSortDouble(int index) {
        return sortDouble_.get(index);
      }
      /**
       * repeated double sortDouble = 11;
       */
      public Builder setSortDouble(
          int index, double value) {
        ensureSortDoubleIsMutable();
        sortDouble_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated double sortDouble = 11;
       */
      public Builder addSortDouble(double value) {
        ensureSortDoubleIsMutable();
        sortDouble_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated double sortDouble = 11;
       */
      public Builder addAllSortDouble(
          java.lang.Iterable values) {
        ensureSortDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortDouble_);
        onChanged();
        return this;
      }
      /**
       * repeated double sortDouble = 11;
       */
      public Builder clearSortDouble() {
        sortDouble_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }

      private java.util.List sortDate_ = java.util.Collections.emptyList();
      private void ensureSortDateIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          sortDate_ = new java.util.ArrayList(sortDate_);
          bitField0_ |= 0x00000800;
         }
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public java.util.List
          getSortDateList() {
        return java.util.Collections.unmodifiableList(sortDate_);
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public int getSortDateCount() {
        return sortDate_.size();
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public long getSortDate(int index) {
        return sortDate_.get(index);
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public Builder setSortDate(
          int index, long value) {
        ensureSortDateIsMutable();
        sortDate_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public Builder addSortDate(long value) {
        ensureSortDateIsMutable();
        sortDate_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public Builder addAllSortDate(
          java.lang.Iterable values) {
        ensureSortDateIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sortDate_);
        onChanged();
        return this;
      }
      /**
       * repeated int64 sortDate = 12;
       */
      public Builder clearSortDate() {
        sortDate_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * required int64 timestamp = 13;
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * required int64 timestamp = 13;
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * required int64 timestamp = 13;
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00001000;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * required int64 timestamp = 13;
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00001000);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> resultDocumentBuilder_;
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public boolean hasResultDocument() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
        if (resultDocumentBuilder_ == null) {
          return resultDocument_;
        } else {
          return resultDocumentBuilder_.getMessage();
        }
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public Builder setResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resultDocument_ = value;
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public Builder setResultDocument(
          org.lumongo.cluster.message.Lumongo.ResultDocument.Builder builderForValue) {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = builderForValue.build();
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public Builder mergeResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (((bitField0_ & 0x00002000) == 0x00002000) &&
              resultDocument_ != org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance()) {
            resultDocument_ =
              org.lumongo.cluster.message.Lumongo.ResultDocument.newBuilder(resultDocument_).mergeFrom(value).buildPartial();
          } else {
            resultDocument_ = value;
          }
          onChanged();
        } else {
          resultDocumentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public Builder clearResultDocument() {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
          onChanged();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument.Builder getResultDocumentBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getResultDocumentFieldBuilder().getBuilder();
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
        if (resultDocumentBuilder_ != null) {
          return resultDocumentBuilder_.getMessageOrBuilder();
        } else {
          return resultDocument_;
        }
      }
      /**
       * optional .ResultDocument resultDocument = 14;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> 
          getResultDocumentFieldBuilder() {
        if (resultDocumentBuilder_ == null) {
          resultDocumentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder>(
                  getResultDocument(),
                  getParentForChildren(),
                  isClean());
          resultDocument_ = null;
        }
        return resultDocumentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:ScoredResult)
    }

    static {
      defaultInstance = new ScoredResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ScoredResult)
  }

  public interface SortRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SortRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .FieldSort fieldSort = 1;
     */
    java.util.List 
        getFieldSortList();
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    org.lumongo.cluster.message.Lumongo.FieldSort getFieldSort(int index);
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    int getFieldSortCount();
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    java.util.List 
        getFieldSortOrBuilderList();
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder getFieldSortOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code SortRequest}
   */
  public static final class SortRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:SortRequest)
      SortRequestOrBuilder {
    // Use SortRequest.newBuilder() to construct.
    private SortRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SortRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SortRequest defaultInstance;
    public static SortRequest getDefaultInstance() {
      return defaultInstance;
    }

    public SortRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SortRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fieldSort_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fieldSort_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FieldSort.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fieldSort_ = java.util.Collections.unmodifiableList(fieldSort_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SortRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SortRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.SortRequest.class, org.lumongo.cluster.message.Lumongo.SortRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public SortRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SortRequest(input, extensionRegistry);
      }
    };

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

    public static final int FIELDSORT_FIELD_NUMBER = 1;
    private java.util.List fieldSort_;
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    public java.util.List getFieldSortList() {
      return fieldSort_;
    }
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    public java.util.List 
        getFieldSortOrBuilderList() {
      return fieldSort_;
    }
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    public int getFieldSortCount() {
      return fieldSort_.size();
    }
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FieldSort getFieldSort(int index) {
      return fieldSort_.get(index);
    }
    /**
     * repeated .FieldSort fieldSort = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder getFieldSortOrBuilder(
        int index) {
      return fieldSort_.get(index);
    }

    private void initFields() {
      fieldSort_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getFieldSortCount(); i++) {
        if (!getFieldSort(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < fieldSort_.size(); i++) {
        output.writeMessage(1, fieldSort_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < fieldSort_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, fieldSort_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SortRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.SortRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SortRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:SortRequest)
        org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.SortRequest.class, org.lumongo.cluster.message.Lumongo.SortRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.SortRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFieldSortFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fieldSortBuilder_ == null) {
          fieldSort_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fieldSortBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SortRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.SortRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.SortRequest build() {
        org.lumongo.cluster.message.Lumongo.SortRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.SortRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.SortRequest result = new org.lumongo.cluster.message.Lumongo.SortRequest(this);
        int from_bitField0_ = bitField0_;
        if (fieldSortBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            fieldSort_ = java.util.Collections.unmodifiableList(fieldSort_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fieldSort_ = fieldSort_;
        } else {
          result.fieldSort_ = fieldSortBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.SortRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.SortRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.SortRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance()) return this;
        if (fieldSortBuilder_ == null) {
          if (!other.fieldSort_.isEmpty()) {
            if (fieldSort_.isEmpty()) {
              fieldSort_ = other.fieldSort_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFieldSortIsMutable();
              fieldSort_.addAll(other.fieldSort_);
            }
            onChanged();
          }
        } else {
          if (!other.fieldSort_.isEmpty()) {
            if (fieldSortBuilder_.isEmpty()) {
              fieldSortBuilder_.dispose();
              fieldSortBuilder_ = null;
              fieldSort_ = other.fieldSort_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fieldSortBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFieldSortFieldBuilder() : null;
            } else {
              fieldSortBuilder_.addAllMessages(other.fieldSort_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getFieldSortCount(); i++) {
          if (!getFieldSort(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.SortRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.SortRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List fieldSort_ =
        java.util.Collections.emptyList();
      private void ensureFieldSortIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fieldSort_ = new java.util.ArrayList(fieldSort_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FieldSort, org.lumongo.cluster.message.Lumongo.FieldSort.Builder, org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder> fieldSortBuilder_;

      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public java.util.List getFieldSortList() {
        if (fieldSortBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fieldSort_);
        } else {
          return fieldSortBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public int getFieldSortCount() {
        if (fieldSortBuilder_ == null) {
          return fieldSort_.size();
        } else {
          return fieldSortBuilder_.getCount();
        }
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FieldSort getFieldSort(int index) {
        if (fieldSortBuilder_ == null) {
          return fieldSort_.get(index);
        } else {
          return fieldSortBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder setFieldSort(
          int index, org.lumongo.cluster.message.Lumongo.FieldSort value) {
        if (fieldSortBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldSortIsMutable();
          fieldSort_.set(index, value);
          onChanged();
        } else {
          fieldSortBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder setFieldSort(
          int index, org.lumongo.cluster.message.Lumongo.FieldSort.Builder builderForValue) {
        if (fieldSortBuilder_ == null) {
          ensureFieldSortIsMutable();
          fieldSort_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldSortBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder addFieldSort(org.lumongo.cluster.message.Lumongo.FieldSort value) {
        if (fieldSortBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldSortIsMutable();
          fieldSort_.add(value);
          onChanged();
        } else {
          fieldSortBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder addFieldSort(
          int index, org.lumongo.cluster.message.Lumongo.FieldSort value) {
        if (fieldSortBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldSortIsMutable();
          fieldSort_.add(index, value);
          onChanged();
        } else {
          fieldSortBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder addFieldSort(
          org.lumongo.cluster.message.Lumongo.FieldSort.Builder builderForValue) {
        if (fieldSortBuilder_ == null) {
          ensureFieldSortIsMutable();
          fieldSort_.add(builderForValue.build());
          onChanged();
        } else {
          fieldSortBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder addFieldSort(
          int index, org.lumongo.cluster.message.Lumongo.FieldSort.Builder builderForValue) {
        if (fieldSortBuilder_ == null) {
          ensureFieldSortIsMutable();
          fieldSort_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldSortBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder addAllFieldSort(
          java.lang.Iterable values) {
        if (fieldSortBuilder_ == null) {
          ensureFieldSortIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fieldSort_);
          onChanged();
        } else {
          fieldSortBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder clearFieldSort() {
        if (fieldSortBuilder_ == null) {
          fieldSort_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fieldSortBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public Builder removeFieldSort(int index) {
        if (fieldSortBuilder_ == null) {
          ensureFieldSortIsMutable();
          fieldSort_.remove(index);
          onChanged();
        } else {
          fieldSortBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FieldSort.Builder getFieldSortBuilder(
          int index) {
        return getFieldSortFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder getFieldSortOrBuilder(
          int index) {
        if (fieldSortBuilder_ == null) {
          return fieldSort_.get(index);  } else {
          return fieldSortBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public java.util.List 
           getFieldSortOrBuilderList() {
        if (fieldSortBuilder_ != null) {
          return fieldSortBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fieldSort_);
        }
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FieldSort.Builder addFieldSortBuilder() {
        return getFieldSortFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FieldSort.getDefaultInstance());
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FieldSort.Builder addFieldSortBuilder(
          int index) {
        return getFieldSortFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FieldSort.getDefaultInstance());
      }
      /**
       * repeated .FieldSort fieldSort = 1;
       */
      public java.util.List 
           getFieldSortBuilderList() {
        return getFieldSortFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FieldSort, org.lumongo.cluster.message.Lumongo.FieldSort.Builder, org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder> 
          getFieldSortFieldBuilder() {
        if (fieldSortBuilder_ == null) {
          fieldSortBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FieldSort, org.lumongo.cluster.message.Lumongo.FieldSort.Builder, org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder>(
                  fieldSort_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          fieldSort_ = null;
        }
        return fieldSortBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:SortRequest)
    }

    static {
      defaultInstance = new SortRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SortRequest)
  }

  public interface FieldSortOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FieldSort)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string sortField = 1;
     */
    boolean hasSortField();
    /**
     * required string sortField = 1;
     */
    java.lang.String getSortField();
    /**
     * required string sortField = 1;
     */
    com.google.protobuf.ByteString
        getSortFieldBytes();

    /**
     * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
     */
    boolean hasDirection();
    /**
     * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
     */
    org.lumongo.cluster.message.Lumongo.FieldSort.Direction getDirection();
  }
  /**
   * Protobuf type {@code FieldSort}
   */
  public static final class FieldSort extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FieldSort)
      FieldSortOrBuilder {
    // Use FieldSort.newBuilder() to construct.
    private FieldSort(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FieldSort(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FieldSort defaultInstance;
    public static FieldSort getDefaultInstance() {
      return defaultInstance;
    }

    public FieldSort getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FieldSort(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              sortField_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.FieldSort.Direction value = org.lumongo.cluster.message.Lumongo.FieldSort.Direction.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                direction_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FieldSort_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FieldSort_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FieldSort.class, org.lumongo.cluster.message.Lumongo.FieldSort.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FieldSort parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FieldSort(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code FieldSort.Direction}
     */
    public enum Direction
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * ASCENDING = 1;
       */
      ASCENDING(0, 1),
      /**
       * DESCENDING = 2;
       */
      DESCENDING(1, 2),
      ;

      /**
       * ASCENDING = 1;
       */
      public static final int ASCENDING_VALUE = 1;
      /**
       * DESCENDING = 2;
       */
      public static final int DESCENDING_VALUE = 2;


      public final int getNumber() { return value; }

      public static Direction valueOf(int value) {
        switch (value) {
          case 1: return ASCENDING;
          case 2: return DESCENDING;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Direction findValueByNumber(int number) {
                return Direction.valueOf(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.FieldSort.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int index;
      private final int value;

      private Direction(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:FieldSort.Direction)
    }

    private int bitField0_;
    public static final int SORTFIELD_FIELD_NUMBER = 1;
    private java.lang.Object sortField_;
    /**
     * required string sortField = 1;
     */
    public boolean hasSortField() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string sortField = 1;
     */
    public java.lang.String getSortField() {
      java.lang.Object ref = sortField_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sortField_ = s;
        }
        return s;
      }
    }
    /**
     * required string sortField = 1;
     */
    public com.google.protobuf.ByteString
        getSortFieldBytes() {
      java.lang.Object ref = sortField_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sortField_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRECTION_FIELD_NUMBER = 2;
    private org.lumongo.cluster.message.Lumongo.FieldSort.Direction direction_;
    /**
     * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
     */
    public boolean hasDirection() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
     */
    public org.lumongo.cluster.message.Lumongo.FieldSort.Direction getDirection() {
      return direction_;
    }

    private void initFields() {
      sortField_ = "";
      direction_ = org.lumongo.cluster.message.Lumongo.FieldSort.Direction.ASCENDING;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSortField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getSortFieldBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, direction_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getSortFieldBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, direction_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FieldSort parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FieldSort prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FieldSort}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FieldSort)
        org.lumongo.cluster.message.Lumongo.FieldSortOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldSort_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldSort_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FieldSort.class, org.lumongo.cluster.message.Lumongo.FieldSort.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FieldSort.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        sortField_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        direction_ = org.lumongo.cluster.message.Lumongo.FieldSort.Direction.ASCENDING;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FieldSort_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FieldSort getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FieldSort.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FieldSort build() {
        org.lumongo.cluster.message.Lumongo.FieldSort result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FieldSort buildPartial() {
        org.lumongo.cluster.message.Lumongo.FieldSort result = new org.lumongo.cluster.message.Lumongo.FieldSort(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sortField_ = sortField_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.direction_ = direction_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FieldSort) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FieldSort)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FieldSort other) {
        if (other == org.lumongo.cluster.message.Lumongo.FieldSort.getDefaultInstance()) return this;
        if (other.hasSortField()) {
          bitField0_ |= 0x00000001;
          sortField_ = other.sortField_;
          onChanged();
        }
        if (other.hasDirection()) {
          setDirection(other.getDirection());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSortField()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FieldSort parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FieldSort) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object sortField_ = "";
      /**
       * required string sortField = 1;
       */
      public boolean hasSortField() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string sortField = 1;
       */
      public java.lang.String getSortField() {
        java.lang.Object ref = sortField_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sortField_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string sortField = 1;
       */
      public com.google.protobuf.ByteString
          getSortFieldBytes() {
        java.lang.Object ref = sortField_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sortField_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string sortField = 1;
       */
      public Builder setSortField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sortField_ = value;
        onChanged();
        return this;
      }
      /**
       * required string sortField = 1;
       */
      public Builder clearSortField() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sortField_ = getDefaultInstance().getSortField();
        onChanged();
        return this;
      }
      /**
       * required string sortField = 1;
       */
      public Builder setSortFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sortField_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FieldSort.Direction direction_ = org.lumongo.cluster.message.Lumongo.FieldSort.Direction.ASCENDING;
      /**
       * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
       */
      public boolean hasDirection() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
       */
      public org.lumongo.cluster.message.Lumongo.FieldSort.Direction getDirection() {
        return direction_;
      }
      /**
       * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
       */
      public Builder setDirection(org.lumongo.cluster.message.Lumongo.FieldSort.Direction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        direction_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .FieldSort.Direction direction = 2 [default = ASCENDING];
       */
      public Builder clearDirection() {
        bitField0_ = (bitField0_ & ~0x00000002);
        direction_ = org.lumongo.cluster.message.Lumongo.FieldSort.Direction.ASCENDING;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FieldSort)
    }

    static {
      defaultInstance = new FieldSort(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FieldSort)
  }

  public interface FacetGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FacetGroup)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required .CountRequest countRequest = 1;
     */
    boolean hasCountRequest();
    /**
     * required .CountRequest countRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest();
    /**
     * required .CountRequest countRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder();

    /**
     * repeated .FacetCount facetCount = 2;
     */
    java.util.List 
        getFacetCountList();
    /**
     * repeated .FacetCount facetCount = 2;
     */
    org.lumongo.cluster.message.Lumongo.FacetCount getFacetCount(int index);
    /**
     * repeated .FacetCount facetCount = 2;
     */
    int getFacetCountCount();
    /**
     * repeated .FacetCount facetCount = 2;
     */
    java.util.List 
        getFacetCountOrBuilderList();
    /**
     * repeated .FacetCount facetCount = 2;
     */
    org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder getFacetCountOrBuilder(
        int index);

    /**
     * optional bool possibleMissing = 3 [default = false];
     */
    boolean hasPossibleMissing();
    /**
     * optional bool possibleMissing = 3 [default = false];
     */
    boolean getPossibleMissing();

    /**
     * optional uint64 maxValuePossibleMissing = 4 [default = 0];
     */
    boolean hasMaxValuePossibleMissing();
    /**
     * optional uint64 maxValuePossibleMissing = 4 [default = 0];
     */
    long getMaxValuePossibleMissing();
  }
  /**
   * Protobuf type {@code FacetGroup}
   */
  public static final class FacetGroup extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FacetGroup)
      FacetGroupOrBuilder {
    // Use FacetGroup.newBuilder() to construct.
    private FacetGroup(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FacetGroup(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FacetGroup defaultInstance;
    public static FacetGroup getDefaultInstance() {
      return defaultInstance;
    }

    public FacetGroup getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FacetGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.lumongo.cluster.message.Lumongo.CountRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = countRequest_.toBuilder();
              }
              countRequest_ = input.readMessage(org.lumongo.cluster.message.Lumongo.CountRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(countRequest_);
                countRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                facetCount_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              facetCount_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FacetCount.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              possibleMissing_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              maxValuePossibleMissing_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          facetCount_ = java.util.Collections.unmodifiableList(facetCount_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetGroup_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FacetGroup.class, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FacetGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FacetGroup(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int COUNTREQUEST_FIELD_NUMBER = 1;
    private org.lumongo.cluster.message.Lumongo.CountRequest countRequest_;
    /**
     * required .CountRequest countRequest = 1;
     */
    public boolean hasCountRequest() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required .CountRequest countRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest() {
      return countRequest_;
    }
    /**
     * required .CountRequest countRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder() {
      return countRequest_;
    }

    public static final int FACETCOUNT_FIELD_NUMBER = 2;
    private java.util.List facetCount_;
    /**
     * repeated .FacetCount facetCount = 2;
     */
    public java.util.List getFacetCountList() {
      return facetCount_;
    }
    /**
     * repeated .FacetCount facetCount = 2;
     */
    public java.util.List 
        getFacetCountOrBuilderList() {
      return facetCount_;
    }
    /**
     * repeated .FacetCount facetCount = 2;
     */
    public int getFacetCountCount() {
      return facetCount_.size();
    }
    /**
     * repeated .FacetCount facetCount = 2;
     */
    public org.lumongo.cluster.message.Lumongo.FacetCount getFacetCount(int index) {
      return facetCount_.get(index);
    }
    /**
     * repeated .FacetCount facetCount = 2;
     */
    public org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder getFacetCountOrBuilder(
        int index) {
      return facetCount_.get(index);
    }

    public static final int POSSIBLEMISSING_FIELD_NUMBER = 3;
    private boolean possibleMissing_;
    /**
     * optional bool possibleMissing = 3 [default = false];
     */
    public boolean hasPossibleMissing() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional bool possibleMissing = 3 [default = false];
     */
    public boolean getPossibleMissing() {
      return possibleMissing_;
    }

    public static final int MAXVALUEPOSSIBLEMISSING_FIELD_NUMBER = 4;
    private long maxValuePossibleMissing_;
    /**
     * optional uint64 maxValuePossibleMissing = 4 [default = 0];
     */
    public boolean hasMaxValuePossibleMissing() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint64 maxValuePossibleMissing = 4 [default = 0];
     */
    public long getMaxValuePossibleMissing() {
      return maxValuePossibleMissing_;
    }

    private void initFields() {
      countRequest_ = org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance();
      facetCount_ = java.util.Collections.emptyList();
      possibleMissing_ = false;
      maxValuePossibleMissing_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasCountRequest()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCountRequest().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFacetCountCount(); i++) {
        if (!getFacetCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, countRequest_);
      }
      for (int i = 0; i < facetCount_.size(); i++) {
        output.writeMessage(2, facetCount_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, possibleMissing_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(4, maxValuePossibleMissing_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, countRequest_);
      }
      for (int i = 0; i < facetCount_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, facetCount_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, possibleMissing_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, maxValuePossibleMissing_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetGroup parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FacetGroup prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FacetGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FacetGroup)
        org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetGroup_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FacetGroup.class, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FacetGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getCountRequestFieldBuilder();
          getFacetCountFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (countRequestBuilder_ == null) {
          countRequest_ = org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance();
        } else {
          countRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (facetCountBuilder_ == null) {
          facetCount_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          facetCountBuilder_.clear();
        }
        possibleMissing_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        maxValuePossibleMissing_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetGroup_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FacetGroup getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FacetGroup build() {
        org.lumongo.cluster.message.Lumongo.FacetGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FacetGroup buildPartial() {
        org.lumongo.cluster.message.Lumongo.FacetGroup result = new org.lumongo.cluster.message.Lumongo.FacetGroup(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (countRequestBuilder_ == null) {
          result.countRequest_ = countRequest_;
        } else {
          result.countRequest_ = countRequestBuilder_.build();
        }
        if (facetCountBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            facetCount_ = java.util.Collections.unmodifiableList(facetCount_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.facetCount_ = facetCount_;
        } else {
          result.facetCount_ = facetCountBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.possibleMissing_ = possibleMissing_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.maxValuePossibleMissing_ = maxValuePossibleMissing_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FacetGroup) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FacetGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FacetGroup other) {
        if (other == org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance()) return this;
        if (other.hasCountRequest()) {
          mergeCountRequest(other.getCountRequest());
        }
        if (facetCountBuilder_ == null) {
          if (!other.facetCount_.isEmpty()) {
            if (facetCount_.isEmpty()) {
              facetCount_ = other.facetCount_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFacetCountIsMutable();
              facetCount_.addAll(other.facetCount_);
            }
            onChanged();
          }
        } else {
          if (!other.facetCount_.isEmpty()) {
            if (facetCountBuilder_.isEmpty()) {
              facetCountBuilder_.dispose();
              facetCountBuilder_ = null;
              facetCount_ = other.facetCount_;
              bitField0_ = (bitField0_ & ~0x00000002);
              facetCountBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFacetCountFieldBuilder() : null;
            } else {
              facetCountBuilder_.addAllMessages(other.facetCount_);
            }
          }
        }
        if (other.hasPossibleMissing()) {
          setPossibleMissing(other.getPossibleMissing());
        }
        if (other.hasMaxValuePossibleMissing()) {
          setMaxValuePossibleMissing(other.getMaxValuePossibleMissing());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCountRequest()) {
          
          return false;
        }
        if (!getCountRequest().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getFacetCountCount(); i++) {
          if (!getFacetCount(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FacetGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FacetGroup) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.lumongo.cluster.message.Lumongo.CountRequest countRequest_ = org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder> countRequestBuilder_;
      /**
       * required .CountRequest countRequest = 1;
       */
      public boolean hasCountRequest() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest() {
        if (countRequestBuilder_ == null) {
          return countRequest_;
        } else {
          return countRequestBuilder_.getMessage();
        }
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public Builder setCountRequest(org.lumongo.cluster.message.Lumongo.CountRequest value) {
        if (countRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          countRequest_ = value;
          onChanged();
        } else {
          countRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public Builder setCountRequest(
          org.lumongo.cluster.message.Lumongo.CountRequest.Builder builderForValue) {
        if (countRequestBuilder_ == null) {
          countRequest_ = builderForValue.build();
          onChanged();
        } else {
          countRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public Builder mergeCountRequest(org.lumongo.cluster.message.Lumongo.CountRequest value) {
        if (countRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              countRequest_ != org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance()) {
            countRequest_ =
              org.lumongo.cluster.message.Lumongo.CountRequest.newBuilder(countRequest_).mergeFrom(value).buildPartial();
          } else {
            countRequest_ = value;
          }
          onChanged();
        } else {
          countRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public Builder clearCountRequest() {
        if (countRequestBuilder_ == null) {
          countRequest_ = org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance();
          onChanged();
        } else {
          countRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest.Builder getCountRequestBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getCountRequestFieldBuilder().getBuilder();
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder() {
        if (countRequestBuilder_ != null) {
          return countRequestBuilder_.getMessageOrBuilder();
        } else {
          return countRequest_;
        }
      }
      /**
       * required .CountRequest countRequest = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder> 
          getCountRequestFieldBuilder() {
        if (countRequestBuilder_ == null) {
          countRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder>(
                  getCountRequest(),
                  getParentForChildren(),
                  isClean());
          countRequest_ = null;
        }
        return countRequestBuilder_;
      }

      private java.util.List facetCount_ =
        java.util.Collections.emptyList();
      private void ensureFacetCountIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          facetCount_ = new java.util.ArrayList(facetCount_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetCount, org.lumongo.cluster.message.Lumongo.FacetCount.Builder, org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder> facetCountBuilder_;

      /**
       * repeated .FacetCount facetCount = 2;
       */
      public java.util.List getFacetCountList() {
        if (facetCountBuilder_ == null) {
          return java.util.Collections.unmodifiableList(facetCount_);
        } else {
          return facetCountBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public int getFacetCountCount() {
        if (facetCountBuilder_ == null) {
          return facetCount_.size();
        } else {
          return facetCountBuilder_.getCount();
        }
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetCount getFacetCount(int index) {
        if (facetCountBuilder_ == null) {
          return facetCount_.get(index);
        } else {
          return facetCountBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder setFacetCount(
          int index, org.lumongo.cluster.message.Lumongo.FacetCount value) {
        if (facetCountBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetCountIsMutable();
          facetCount_.set(index, value);
          onChanged();
        } else {
          facetCountBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder setFacetCount(
          int index, org.lumongo.cluster.message.Lumongo.FacetCount.Builder builderForValue) {
        if (facetCountBuilder_ == null) {
          ensureFacetCountIsMutable();
          facetCount_.set(index, builderForValue.build());
          onChanged();
        } else {
          facetCountBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder addFacetCount(org.lumongo.cluster.message.Lumongo.FacetCount value) {
        if (facetCountBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetCountIsMutable();
          facetCount_.add(value);
          onChanged();
        } else {
          facetCountBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder addFacetCount(
          int index, org.lumongo.cluster.message.Lumongo.FacetCount value) {
        if (facetCountBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetCountIsMutable();
          facetCount_.add(index, value);
          onChanged();
        } else {
          facetCountBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder addFacetCount(
          org.lumongo.cluster.message.Lumongo.FacetCount.Builder builderForValue) {
        if (facetCountBuilder_ == null) {
          ensureFacetCountIsMutable();
          facetCount_.add(builderForValue.build());
          onChanged();
        } else {
          facetCountBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder addFacetCount(
          int index, org.lumongo.cluster.message.Lumongo.FacetCount.Builder builderForValue) {
        if (facetCountBuilder_ == null) {
          ensureFacetCountIsMutable();
          facetCount_.add(index, builderForValue.build());
          onChanged();
        } else {
          facetCountBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder addAllFacetCount(
          java.lang.Iterable values) {
        if (facetCountBuilder_ == null) {
          ensureFacetCountIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, facetCount_);
          onChanged();
        } else {
          facetCountBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder clearFacetCount() {
        if (facetCountBuilder_ == null) {
          facetCount_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          facetCountBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public Builder removeFacetCount(int index) {
        if (facetCountBuilder_ == null) {
          ensureFacetCountIsMutable();
          facetCount_.remove(index);
          onChanged();
        } else {
          facetCountBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetCount.Builder getFacetCountBuilder(
          int index) {
        return getFacetCountFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder getFacetCountOrBuilder(
          int index) {
        if (facetCountBuilder_ == null) {
          return facetCount_.get(index);  } else {
          return facetCountBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public java.util.List 
           getFacetCountOrBuilderList() {
        if (facetCountBuilder_ != null) {
          return facetCountBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(facetCount_);
        }
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetCount.Builder addFacetCountBuilder() {
        return getFacetCountFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FacetCount.getDefaultInstance());
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public org.lumongo.cluster.message.Lumongo.FacetCount.Builder addFacetCountBuilder(
          int index) {
        return getFacetCountFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FacetCount.getDefaultInstance());
      }
      /**
       * repeated .FacetCount facetCount = 2;
       */
      public java.util.List 
           getFacetCountBuilderList() {
        return getFacetCountFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetCount, org.lumongo.cluster.message.Lumongo.FacetCount.Builder, org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder> 
          getFacetCountFieldBuilder() {
        if (facetCountBuilder_ == null) {
          facetCountBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FacetCount, org.lumongo.cluster.message.Lumongo.FacetCount.Builder, org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder>(
                  facetCount_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          facetCount_ = null;
        }
        return facetCountBuilder_;
      }

      private boolean possibleMissing_ ;
      /**
       * optional bool possibleMissing = 3 [default = false];
       */
      public boolean hasPossibleMissing() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional bool possibleMissing = 3 [default = false];
       */
      public boolean getPossibleMissing() {
        return possibleMissing_;
      }
      /**
       * optional bool possibleMissing = 3 [default = false];
       */
      public Builder setPossibleMissing(boolean value) {
        bitField0_ |= 0x00000004;
        possibleMissing_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool possibleMissing = 3 [default = false];
       */
      public Builder clearPossibleMissing() {
        bitField0_ = (bitField0_ & ~0x00000004);
        possibleMissing_ = false;
        onChanged();
        return this;
      }

      private long maxValuePossibleMissing_ ;
      /**
       * optional uint64 maxValuePossibleMissing = 4 [default = 0];
       */
      public boolean hasMaxValuePossibleMissing() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint64 maxValuePossibleMissing = 4 [default = 0];
       */
      public long getMaxValuePossibleMissing() {
        return maxValuePossibleMissing_;
      }
      /**
       * optional uint64 maxValuePossibleMissing = 4 [default = 0];
       */
      public Builder setMaxValuePossibleMissing(long value) {
        bitField0_ |= 0x00000008;
        maxValuePossibleMissing_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 maxValuePossibleMissing = 4 [default = 0];
       */
      public Builder clearMaxValuePossibleMissing() {
        bitField0_ = (bitField0_ & ~0x00000008);
        maxValuePossibleMissing_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FacetGroup)
    }

    static {
      defaultInstance = new FacetGroup(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FacetGroup)
  }

  public interface FacetCountOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FacetCount)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string facet = 1;
     */
    boolean hasFacet();
    /**
     * required string facet = 1;
     */
    java.lang.String getFacet();
    /**
     * required string facet = 1;
     */
    com.google.protobuf.ByteString
        getFacetBytes();

    /**
     * required uint64 count = 2;
     */
    boolean hasCount();
    /**
     * required uint64 count = 2;
     */
    long getCount();

    /**
     * optional uint64 maxError = 3;
     */
    boolean hasMaxError();
    /**
     * optional uint64 maxError = 3;
     */
    long getMaxError();
  }
  /**
   * Protobuf type {@code FacetCount}
   */
  public static final class FacetCount extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FacetCount)
      FacetCountOrBuilder {
    // Use FacetCount.newBuilder() to construct.
    private FacetCount(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FacetCount(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FacetCount defaultInstance;
    public static FacetCount getDefaultInstance() {
      return defaultInstance;
    }

    public FacetCount getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FacetCount(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              facet_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              count_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              maxError_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetCount_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetCount_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FacetCount.class, org.lumongo.cluster.message.Lumongo.FacetCount.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FacetCount parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FacetCount(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FACET_FIELD_NUMBER = 1;
    private java.lang.Object facet_;
    /**
     * required string facet = 1;
     */
    public boolean hasFacet() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string facet = 1;
     */
    public java.lang.String getFacet() {
      java.lang.Object ref = facet_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          facet_ = s;
        }
        return s;
      }
    }
    /**
     * required string facet = 1;
     */
    public com.google.protobuf.ByteString
        getFacetBytes() {
      java.lang.Object ref = facet_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        facet_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COUNT_FIELD_NUMBER = 2;
    private long count_;
    /**
     * required uint64 count = 2;
     */
    public boolean hasCount() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint64 count = 2;
     */
    public long getCount() {
      return count_;
    }

    public static final int MAXERROR_FIELD_NUMBER = 3;
    private long maxError_;
    /**
     * optional uint64 maxError = 3;
     */
    public boolean hasMaxError() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint64 maxError = 3;
     */
    public long getMaxError() {
      return maxError_;
    }

    private void initFields() {
      facet_ = "";
      count_ = 0L;
      maxError_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFacet()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getFacetBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, count_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, maxError_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getFacetBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, count_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, maxError_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetCount parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FacetCount prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FacetCount}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FacetCount)
        org.lumongo.cluster.message.Lumongo.FacetCountOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetCount_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetCount_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FacetCount.class, org.lumongo.cluster.message.Lumongo.FacetCount.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FacetCount.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        facet_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        count_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        maxError_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetCount_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FacetCount getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FacetCount.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FacetCount build() {
        org.lumongo.cluster.message.Lumongo.FacetCount result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FacetCount buildPartial() {
        org.lumongo.cluster.message.Lumongo.FacetCount result = new org.lumongo.cluster.message.Lumongo.FacetCount(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.facet_ = facet_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.count_ = count_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.maxError_ = maxError_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FacetCount) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FacetCount)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FacetCount other) {
        if (other == org.lumongo.cluster.message.Lumongo.FacetCount.getDefaultInstance()) return this;
        if (other.hasFacet()) {
          bitField0_ |= 0x00000001;
          facet_ = other.facet_;
          onChanged();
        }
        if (other.hasCount()) {
          setCount(other.getCount());
        }
        if (other.hasMaxError()) {
          setMaxError(other.getMaxError());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFacet()) {
          
          return false;
        }
        if (!hasCount()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FacetCount parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FacetCount) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object facet_ = "";
      /**
       * required string facet = 1;
       */
      public boolean hasFacet() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string facet = 1;
       */
      public java.lang.String getFacet() {
        java.lang.Object ref = facet_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            facet_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string facet = 1;
       */
      public com.google.protobuf.ByteString
          getFacetBytes() {
        java.lang.Object ref = facet_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          facet_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string facet = 1;
       */
      public Builder setFacet(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        facet_ = value;
        onChanged();
        return this;
      }
      /**
       * required string facet = 1;
       */
      public Builder clearFacet() {
        bitField0_ = (bitField0_ & ~0x00000001);
        facet_ = getDefaultInstance().getFacet();
        onChanged();
        return this;
      }
      /**
       * required string facet = 1;
       */
      public Builder setFacetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        facet_ = value;
        onChanged();
        return this;
      }

      private long count_ ;
      /**
       * required uint64 count = 2;
       */
      public boolean hasCount() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required uint64 count = 2;
       */
      public long getCount() {
        return count_;
      }
      /**
       * required uint64 count = 2;
       */
      public Builder setCount(long value) {
        bitField0_ |= 0x00000002;
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint64 count = 2;
       */
      public Builder clearCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        count_ = 0L;
        onChanged();
        return this;
      }

      private long maxError_ ;
      /**
       * optional uint64 maxError = 3;
       */
      public boolean hasMaxError() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint64 maxError = 3;
       */
      public long getMaxError() {
        return maxError_;
      }
      /**
       * optional uint64 maxError = 3;
       */
      public Builder setMaxError(long value) {
        bitField0_ |= 0x00000004;
        maxError_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 maxError = 3;
       */
      public Builder clearMaxError() {
        bitField0_ = (bitField0_ & ~0x00000004);
        maxError_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FacetCount)
    }

    static {
      defaultInstance = new FacetCount(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FacetCount)
  }

  public interface FacetRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FacetRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .CountRequest countRequest = 1;
     */
    java.util.List 
        getCountRequestList();
    /**
     * repeated .CountRequest countRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest(int index);
    /**
     * repeated .CountRequest countRequest = 1;
     */
    int getCountRequestCount();
    /**
     * repeated .CountRequest countRequest = 1;
     */
    java.util.List 
        getCountRequestOrBuilderList();
    /**
     * repeated .CountRequest countRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder(
        int index);

    /**
     * repeated .LMFacet drillDown = 2;
     */
    java.util.List 
        getDrillDownList();
    /**
     * repeated .LMFacet drillDown = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMFacet getDrillDown(int index);
    /**
     * repeated .LMFacet drillDown = 2;
     */
    int getDrillDownCount();
    /**
     * repeated .LMFacet drillDown = 2;
     */
    java.util.List 
        getDrillDownOrBuilderList();
    /**
     * repeated .LMFacet drillDown = 2;
     */
    org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getDrillDownOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code FacetRequest}
   */
  public static final class FacetRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FacetRequest)
      FacetRequestOrBuilder {
    // Use FacetRequest.newBuilder() to construct.
    private FacetRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FacetRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FacetRequest defaultInstance;
    public static FacetRequest getDefaultInstance() {
      return defaultInstance;
    }

    public FacetRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FacetRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                countRequest_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              countRequest_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.CountRequest.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                drillDown_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              drillDown_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.LMFacet.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          countRequest_ = java.util.Collections.unmodifiableList(countRequest_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          drillDown_ = java.util.Collections.unmodifiableList(drillDown_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FacetRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FacetRequest.class, org.lumongo.cluster.message.Lumongo.FacetRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FacetRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FacetRequest(input, extensionRegistry);
      }
    };

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

    public static final int COUNTREQUEST_FIELD_NUMBER = 1;
    private java.util.List countRequest_;
    /**
     * repeated .CountRequest countRequest = 1;
     */
    public java.util.List getCountRequestList() {
      return countRequest_;
    }
    /**
     * repeated .CountRequest countRequest = 1;
     */
    public java.util.List 
        getCountRequestOrBuilderList() {
      return countRequest_;
    }
    /**
     * repeated .CountRequest countRequest = 1;
     */
    public int getCountRequestCount() {
      return countRequest_.size();
    }
    /**
     * repeated .CountRequest countRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest(int index) {
      return countRequest_.get(index);
    }
    /**
     * repeated .CountRequest countRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder(
        int index) {
      return countRequest_.get(index);
    }

    public static final int DRILLDOWN_FIELD_NUMBER = 2;
    private java.util.List drillDown_;
    /**
     * repeated .LMFacet drillDown = 2;
     */
    public java.util.List getDrillDownList() {
      return drillDown_;
    }
    /**
     * repeated .LMFacet drillDown = 2;
     */
    public java.util.List 
        getDrillDownOrBuilderList() {
      return drillDown_;
    }
    /**
     * repeated .LMFacet drillDown = 2;
     */
    public int getDrillDownCount() {
      return drillDown_.size();
    }
    /**
     * repeated .LMFacet drillDown = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacet getDrillDown(int index) {
      return drillDown_.get(index);
    }
    /**
     * repeated .LMFacet drillDown = 2;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getDrillDownOrBuilder(
        int index) {
      return drillDown_.get(index);
    }

    private void initFields() {
      countRequest_ = java.util.Collections.emptyList();
      drillDown_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getCountRequestCount(); i++) {
        if (!getCountRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getDrillDownCount(); i++) {
        if (!getDrillDown(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < countRequest_.size(); i++) {
        output.writeMessage(1, countRequest_.get(i));
      }
      for (int i = 0; i < drillDown_.size(); i++) {
        output.writeMessage(2, drillDown_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < countRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, countRequest_.get(i));
      }
      for (int i = 0; i < drillDown_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, drillDown_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FacetRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FacetRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FacetRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FacetRequest)
        org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FacetRequest.class, org.lumongo.cluster.message.Lumongo.FacetRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FacetRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getCountRequestFieldBuilder();
          getDrillDownFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (countRequestBuilder_ == null) {
          countRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          countRequestBuilder_.clear();
        }
        if (drillDownBuilder_ == null) {
          drillDown_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          drillDownBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FacetRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FacetRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FacetRequest build() {
        org.lumongo.cluster.message.Lumongo.FacetRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FacetRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.FacetRequest result = new org.lumongo.cluster.message.Lumongo.FacetRequest(this);
        int from_bitField0_ = bitField0_;
        if (countRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            countRequest_ = java.util.Collections.unmodifiableList(countRequest_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.countRequest_ = countRequest_;
        } else {
          result.countRequest_ = countRequestBuilder_.build();
        }
        if (drillDownBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            drillDown_ = java.util.Collections.unmodifiableList(drillDown_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.drillDown_ = drillDown_;
        } else {
          result.drillDown_ = drillDownBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FacetRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FacetRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FacetRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance()) return this;
        if (countRequestBuilder_ == null) {
          if (!other.countRequest_.isEmpty()) {
            if (countRequest_.isEmpty()) {
              countRequest_ = other.countRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureCountRequestIsMutable();
              countRequest_.addAll(other.countRequest_);
            }
            onChanged();
          }
        } else {
          if (!other.countRequest_.isEmpty()) {
            if (countRequestBuilder_.isEmpty()) {
              countRequestBuilder_.dispose();
              countRequestBuilder_ = null;
              countRequest_ = other.countRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
              countRequestBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getCountRequestFieldBuilder() : null;
            } else {
              countRequestBuilder_.addAllMessages(other.countRequest_);
            }
          }
        }
        if (drillDownBuilder_ == null) {
          if (!other.drillDown_.isEmpty()) {
            if (drillDown_.isEmpty()) {
              drillDown_ = other.drillDown_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDrillDownIsMutable();
              drillDown_.addAll(other.drillDown_);
            }
            onChanged();
          }
        } else {
          if (!other.drillDown_.isEmpty()) {
            if (drillDownBuilder_.isEmpty()) {
              drillDownBuilder_.dispose();
              drillDownBuilder_ = null;
              drillDown_ = other.drillDown_;
              bitField0_ = (bitField0_ & ~0x00000002);
              drillDownBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getDrillDownFieldBuilder() : null;
            } else {
              drillDownBuilder_.addAllMessages(other.drillDown_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getCountRequestCount(); i++) {
          if (!getCountRequest(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getDrillDownCount(); i++) {
          if (!getDrillDown(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FacetRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FacetRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List countRequest_ =
        java.util.Collections.emptyList();
      private void ensureCountRequestIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          countRequest_ = new java.util.ArrayList(countRequest_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder> countRequestBuilder_;

      /**
       * repeated .CountRequest countRequest = 1;
       */
      public java.util.List getCountRequestList() {
        if (countRequestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(countRequest_);
        } else {
          return countRequestBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public int getCountRequestCount() {
        if (countRequestBuilder_ == null) {
          return countRequest_.size();
        } else {
          return countRequestBuilder_.getCount();
        }
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest getCountRequest(int index) {
        if (countRequestBuilder_ == null) {
          return countRequest_.get(index);
        } else {
          return countRequestBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder setCountRequest(
          int index, org.lumongo.cluster.message.Lumongo.CountRequest value) {
        if (countRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCountRequestIsMutable();
          countRequest_.set(index, value);
          onChanged();
        } else {
          countRequestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder setCountRequest(
          int index, org.lumongo.cluster.message.Lumongo.CountRequest.Builder builderForValue) {
        if (countRequestBuilder_ == null) {
          ensureCountRequestIsMutable();
          countRequest_.set(index, builderForValue.build());
          onChanged();
        } else {
          countRequestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder addCountRequest(org.lumongo.cluster.message.Lumongo.CountRequest value) {
        if (countRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCountRequestIsMutable();
          countRequest_.add(value);
          onChanged();
        } else {
          countRequestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder addCountRequest(
          int index, org.lumongo.cluster.message.Lumongo.CountRequest value) {
        if (countRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCountRequestIsMutable();
          countRequest_.add(index, value);
          onChanged();
        } else {
          countRequestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder addCountRequest(
          org.lumongo.cluster.message.Lumongo.CountRequest.Builder builderForValue) {
        if (countRequestBuilder_ == null) {
          ensureCountRequestIsMutable();
          countRequest_.add(builderForValue.build());
          onChanged();
        } else {
          countRequestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder addCountRequest(
          int index, org.lumongo.cluster.message.Lumongo.CountRequest.Builder builderForValue) {
        if (countRequestBuilder_ == null) {
          ensureCountRequestIsMutable();
          countRequest_.add(index, builderForValue.build());
          onChanged();
        } else {
          countRequestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder addAllCountRequest(
          java.lang.Iterable values) {
        if (countRequestBuilder_ == null) {
          ensureCountRequestIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, countRequest_);
          onChanged();
        } else {
          countRequestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder clearCountRequest() {
        if (countRequestBuilder_ == null) {
          countRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          countRequestBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public Builder removeCountRequest(int index) {
        if (countRequestBuilder_ == null) {
          ensureCountRequestIsMutable();
          countRequest_.remove(index);
          onChanged();
        } else {
          countRequestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest.Builder getCountRequestBuilder(
          int index) {
        return getCountRequestFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder getCountRequestOrBuilder(
          int index) {
        if (countRequestBuilder_ == null) {
          return countRequest_.get(index);  } else {
          return countRequestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public java.util.List 
           getCountRequestOrBuilderList() {
        if (countRequestBuilder_ != null) {
          return countRequestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(countRequest_);
        }
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest.Builder addCountRequestBuilder() {
        return getCountRequestFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance());
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.CountRequest.Builder addCountRequestBuilder(
          int index) {
        return getCountRequestFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance());
      }
      /**
       * repeated .CountRequest countRequest = 1;
       */
      public java.util.List 
           getCountRequestBuilderList() {
        return getCountRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder> 
          getCountRequestFieldBuilder() {
        if (countRequestBuilder_ == null) {
          countRequestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.CountRequest, org.lumongo.cluster.message.Lumongo.CountRequest.Builder, org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder>(
                  countRequest_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          countRequest_ = null;
        }
        return countRequestBuilder_;
      }

      private java.util.List drillDown_ =
        java.util.Collections.emptyList();
      private void ensureDrillDownIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          drillDown_ = new java.util.ArrayList(drillDown_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> drillDownBuilder_;

      /**
       * repeated .LMFacet drillDown = 2;
       */
      public java.util.List getDrillDownList() {
        if (drillDownBuilder_ == null) {
          return java.util.Collections.unmodifiableList(drillDown_);
        } else {
          return drillDownBuilder_.getMessageList();
        }
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public int getDrillDownCount() {
        if (drillDownBuilder_ == null) {
          return drillDown_.size();
        } else {
          return drillDownBuilder_.getCount();
        }
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet getDrillDown(int index) {
        if (drillDownBuilder_ == null) {
          return drillDown_.get(index);
        } else {
          return drillDownBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder setDrillDown(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (drillDownBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrillDownIsMutable();
          drillDown_.set(index, value);
          onChanged();
        } else {
          drillDownBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder setDrillDown(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (drillDownBuilder_ == null) {
          ensureDrillDownIsMutable();
          drillDown_.set(index, builderForValue.build());
          onChanged();
        } else {
          drillDownBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder addDrillDown(org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (drillDownBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrillDownIsMutable();
          drillDown_.add(value);
          onChanged();
        } else {
          drillDownBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder addDrillDown(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (drillDownBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDrillDownIsMutable();
          drillDown_.add(index, value);
          onChanged();
        } else {
          drillDownBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder addDrillDown(
          org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (drillDownBuilder_ == null) {
          ensureDrillDownIsMutable();
          drillDown_.add(builderForValue.build());
          onChanged();
        } else {
          drillDownBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder addDrillDown(
          int index, org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (drillDownBuilder_ == null) {
          ensureDrillDownIsMutable();
          drillDown_.add(index, builderForValue.build());
          onChanged();
        } else {
          drillDownBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder addAllDrillDown(
          java.lang.Iterable values) {
        if (drillDownBuilder_ == null) {
          ensureDrillDownIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, drillDown_);
          onChanged();
        } else {
          drillDownBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder clearDrillDown() {
        if (drillDownBuilder_ == null) {
          drillDown_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          drillDownBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public Builder removeDrillDown(int index) {
        if (drillDownBuilder_ == null) {
          ensureDrillDownIsMutable();
          drillDown_.remove(index);
          onChanged();
        } else {
          drillDownBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder getDrillDownBuilder(
          int index) {
        return getDrillDownFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getDrillDownOrBuilder(
          int index) {
        if (drillDownBuilder_ == null) {
          return drillDown_.get(index);  } else {
          return drillDownBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public java.util.List 
           getDrillDownOrBuilderList() {
        if (drillDownBuilder_ != null) {
          return drillDownBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(drillDown_);
        }
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder addDrillDownBuilder() {
        return getDrillDownFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance());
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder addDrillDownBuilder(
          int index) {
        return getDrillDownFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance());
      }
      /**
       * repeated .LMFacet drillDown = 2;
       */
      public java.util.List 
           getDrillDownBuilderList() {
        return getDrillDownFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> 
          getDrillDownFieldBuilder() {
        if (drillDownBuilder_ == null) {
          drillDownBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder>(
                  drillDown_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          drillDown_ = null;
        }
        return drillDownBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:FacetRequest)
    }

    static {
      defaultInstance = new FacetRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FacetRequest)
  }

  public interface CountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CountRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required .LMFacet facetField = 1;
     */
    boolean hasFacetField();
    /**
     * required .LMFacet facetField = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMFacet getFacetField();
    /**
     * required .LMFacet facetField = 1;
     */
    org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetFieldOrBuilder();

    /**
     * optional uint32 maxFacets = 2 [default = 10];
     */
    boolean hasMaxFacets();
    /**
     * optional uint32 maxFacets = 2 [default = 10];
     */
    int getMaxFacets();

    /**
     * optional uint32 segmentFacets = 3;
     */
    boolean hasSegmentFacets();
    /**
     * optional uint32 segmentFacets = 3;
     */
    int getSegmentFacets();

    /**
     * optional bool computeError = 4 [default = true];
     */
    boolean hasComputeError();
    /**
     * optional bool computeError = 4 [default = true];
     */
    boolean getComputeError();

    /**
     * optional bool computePossibleMissed = 5 [default = true];
     */
    boolean hasComputePossibleMissed();
    /**
     * optional bool computePossibleMissed = 5 [default = true];
     */
    boolean getComputePossibleMissed();
  }
  /**
   * Protobuf type {@code CountRequest}
   */
  public static final class CountRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CountRequest)
      CountRequestOrBuilder {
    // Use CountRequest.newBuilder() to construct.
    private CountRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CountRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CountRequest defaultInstance;
    public static CountRequest getDefaultInstance() {
      return defaultInstance;
    }

    public CountRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CountRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.lumongo.cluster.message.Lumongo.LMFacet.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = facetField_.toBuilder();
              }
              facetField_ = input.readMessage(org.lumongo.cluster.message.Lumongo.LMFacet.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(facetField_);
                facetField_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              maxFacets_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              segmentFacets_ = input.readUInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              computeError_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              computePossibleMissed_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_CountRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_CountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.CountRequest.class, org.lumongo.cluster.message.Lumongo.CountRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public CountRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CountRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FACETFIELD_FIELD_NUMBER = 1;
    private org.lumongo.cluster.message.Lumongo.LMFacet facetField_;
    /**
     * required .LMFacet facetField = 1;
     */
    public boolean hasFacetField() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required .LMFacet facetField = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacet getFacetField() {
      return facetField_;
    }
    /**
     * required .LMFacet facetField = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetFieldOrBuilder() {
      return facetField_;
    }

    public static final int MAXFACETS_FIELD_NUMBER = 2;
    private int maxFacets_;
    /**
     * optional uint32 maxFacets = 2 [default = 10];
     */
    public boolean hasMaxFacets() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 maxFacets = 2 [default = 10];
     */
    public int getMaxFacets() {
      return maxFacets_;
    }

    public static final int SEGMENTFACETS_FIELD_NUMBER = 3;
    private int segmentFacets_;
    /**
     * optional uint32 segmentFacets = 3;
     */
    public boolean hasSegmentFacets() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint32 segmentFacets = 3;
     */
    public int getSegmentFacets() {
      return segmentFacets_;
    }

    public static final int COMPUTEERROR_FIELD_NUMBER = 4;
    private boolean computeError_;
    /**
     * optional bool computeError = 4 [default = true];
     */
    public boolean hasComputeError() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bool computeError = 4 [default = true];
     */
    public boolean getComputeError() {
      return computeError_;
    }

    public static final int COMPUTEPOSSIBLEMISSED_FIELD_NUMBER = 5;
    private boolean computePossibleMissed_;
    /**
     * optional bool computePossibleMissed = 5 [default = true];
     */
    public boolean hasComputePossibleMissed() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional bool computePossibleMissed = 5 [default = true];
     */
    public boolean getComputePossibleMissed() {
      return computePossibleMissed_;
    }

    private void initFields() {
      facetField_ = org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance();
      maxFacets_ = 10;
      segmentFacets_ = 0;
      computeError_ = true;
      computePossibleMissed_ = true;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFacetField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFacetField().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, facetField_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, maxFacets_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, segmentFacets_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, computeError_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, computePossibleMissed_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, facetField_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, maxFacets_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, segmentFacets_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, computeError_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, computePossibleMissed_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.CountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.CountRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CountRequest)
        org.lumongo.cluster.message.Lumongo.CountRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_CountRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_CountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.CountRequest.class, org.lumongo.cluster.message.Lumongo.CountRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.CountRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFacetFieldFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (facetFieldBuilder_ == null) {
          facetField_ = org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance();
        } else {
          facetFieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        maxFacets_ = 10;
        bitField0_ = (bitField0_ & ~0x00000002);
        segmentFacets_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        computeError_ = true;
        bitField0_ = (bitField0_ & ~0x00000008);
        computePossibleMissed_ = true;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_CountRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.CountRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.CountRequest build() {
        org.lumongo.cluster.message.Lumongo.CountRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.CountRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.CountRequest result = new org.lumongo.cluster.message.Lumongo.CountRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (facetFieldBuilder_ == null) {
          result.facetField_ = facetField_;
        } else {
          result.facetField_ = facetFieldBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.maxFacets_ = maxFacets_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.segmentFacets_ = segmentFacets_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.computeError_ = computeError_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.computePossibleMissed_ = computePossibleMissed_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.CountRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.CountRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.CountRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.CountRequest.getDefaultInstance()) return this;
        if (other.hasFacetField()) {
          mergeFacetField(other.getFacetField());
        }
        if (other.hasMaxFacets()) {
          setMaxFacets(other.getMaxFacets());
        }
        if (other.hasSegmentFacets()) {
          setSegmentFacets(other.getSegmentFacets());
        }
        if (other.hasComputeError()) {
          setComputeError(other.getComputeError());
        }
        if (other.hasComputePossibleMissed()) {
          setComputePossibleMissed(other.getComputePossibleMissed());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFacetField()) {
          
          return false;
        }
        if (!getFacetField().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.CountRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.CountRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.lumongo.cluster.message.Lumongo.LMFacet facetField_ = org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> facetFieldBuilder_;
      /**
       * required .LMFacet facetField = 1;
       */
      public boolean hasFacetField() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet getFacetField() {
        if (facetFieldBuilder_ == null) {
          return facetField_;
        } else {
          return facetFieldBuilder_.getMessage();
        }
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public Builder setFacetField(org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (facetFieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          facetField_ = value;
          onChanged();
        } else {
          facetFieldBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public Builder setFacetField(
          org.lumongo.cluster.message.Lumongo.LMFacet.Builder builderForValue) {
        if (facetFieldBuilder_ == null) {
          facetField_ = builderForValue.build();
          onChanged();
        } else {
          facetFieldBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public Builder mergeFacetField(org.lumongo.cluster.message.Lumongo.LMFacet value) {
        if (facetFieldBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              facetField_ != org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance()) {
            facetField_ =
              org.lumongo.cluster.message.Lumongo.LMFacet.newBuilder(facetField_).mergeFrom(value).buildPartial();
          } else {
            facetField_ = value;
          }
          onChanged();
        } else {
          facetFieldBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public Builder clearFacetField() {
        if (facetFieldBuilder_ == null) {
          facetField_ = org.lumongo.cluster.message.Lumongo.LMFacet.getDefaultInstance();
          onChanged();
        } else {
          facetFieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacet.Builder getFacetFieldBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFacetFieldFieldBuilder().getBuilder();
      }
      /**
       * required .LMFacet facetField = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder getFacetFieldOrBuilder() {
        if (facetFieldBuilder_ != null) {
          return facetFieldBuilder_.getMessageOrBuilder();
        } else {
          return facetField_;
        }
      }
      /**
       * required .LMFacet facetField = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder> 
          getFacetFieldFieldBuilder() {
        if (facetFieldBuilder_ == null) {
          facetFieldBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LMFacet, org.lumongo.cluster.message.Lumongo.LMFacet.Builder, org.lumongo.cluster.message.Lumongo.LMFacetOrBuilder>(
                  getFacetField(),
                  getParentForChildren(),
                  isClean());
          facetField_ = null;
        }
        return facetFieldBuilder_;
      }

      private int maxFacets_ = 10;
      /**
       * optional uint32 maxFacets = 2 [default = 10];
       */
      public boolean hasMaxFacets() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 maxFacets = 2 [default = 10];
       */
      public int getMaxFacets() {
        return maxFacets_;
      }
      /**
       * optional uint32 maxFacets = 2 [default = 10];
       */
      public Builder setMaxFacets(int value) {
        bitField0_ |= 0x00000002;
        maxFacets_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 maxFacets = 2 [default = 10];
       */
      public Builder clearMaxFacets() {
        bitField0_ = (bitField0_ & ~0x00000002);
        maxFacets_ = 10;
        onChanged();
        return this;
      }

      private int segmentFacets_ ;
      /**
       * optional uint32 segmentFacets = 3;
       */
      public boolean hasSegmentFacets() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 segmentFacets = 3;
       */
      public int getSegmentFacets() {
        return segmentFacets_;
      }
      /**
       * optional uint32 segmentFacets = 3;
       */
      public Builder setSegmentFacets(int value) {
        bitField0_ |= 0x00000004;
        segmentFacets_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 segmentFacets = 3;
       */
      public Builder clearSegmentFacets() {
        bitField0_ = (bitField0_ & ~0x00000004);
        segmentFacets_ = 0;
        onChanged();
        return this;
      }

      private boolean computeError_ = true;
      /**
       * optional bool computeError = 4 [default = true];
       */
      public boolean hasComputeError() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bool computeError = 4 [default = true];
       */
      public boolean getComputeError() {
        return computeError_;
      }
      /**
       * optional bool computeError = 4 [default = true];
       */
      public Builder setComputeError(boolean value) {
        bitField0_ |= 0x00000008;
        computeError_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool computeError = 4 [default = true];
       */
      public Builder clearComputeError() {
        bitField0_ = (bitField0_ & ~0x00000008);
        computeError_ = true;
        onChanged();
        return this;
      }

      private boolean computePossibleMissed_ = true;
      /**
       * optional bool computePossibleMissed = 5 [default = true];
       */
      public boolean hasComputePossibleMissed() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bool computePossibleMissed = 5 [default = true];
       */
      public boolean getComputePossibleMissed() {
        return computePossibleMissed_;
      }
      /**
       * optional bool computePossibleMissed = 5 [default = true];
       */
      public Builder setComputePossibleMissed(boolean value) {
        bitField0_ |= 0x00000010;
        computePossibleMissed_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool computePossibleMissed = 5 [default = true];
       */
      public Builder clearComputePossibleMissed() {
        bitField0_ = (bitField0_ & ~0x00000010);
        computePossibleMissed_ = true;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CountRequest)
    }

    static {
      defaultInstance = new CountRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CountRequest)
  }

  public interface SegmentResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SegmentResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required uint32 segmentNumber = 1;
     */
    boolean hasSegmentNumber();
    /**
     * required uint32 segmentNumber = 1;
     */
    int getSegmentNumber();

    /**
     * required string indexName = 2;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 2;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 2;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required uint32 totalHits = 3;
     */
    boolean hasTotalHits();
    /**
     * required uint32 totalHits = 3;
     */
    int getTotalHits();

    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    java.util.List 
        getScoredResultList();
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResult getScoredResult(int index);
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    int getScoredResultCount();
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    java.util.List 
        getScoredResultOrBuilderList();
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getScoredResultOrBuilder(
        int index);

    /**
     * optional .ScoredResult next = 5;
     */
    boolean hasNext();
    /**
     * optional .ScoredResult next = 5;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResult getNext();
    /**
     * optional .ScoredResult next = 5;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getNextOrBuilder();

    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    java.util.List 
        getFacetGroupList();
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index);
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    int getFacetGroupCount();
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    java.util.List 
        getFacetGroupOrBuilderList();
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code SegmentResponse}
   */
  public static final class SegmentResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:SegmentResponse)
      SegmentResponseOrBuilder {
    // Use SegmentResponse.newBuilder() to construct.
    private SegmentResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SegmentResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SegmentResponse defaultInstance;
    public static SegmentResponse getDefaultInstance() {
      return defaultInstance;
    }

    public SegmentResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SegmentResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              segmentNumber_ = input.readUInt32();
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              indexName_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              totalHits_ = input.readUInt32();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                scoredResult_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              scoredResult_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.ScoredResult.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              org.lumongo.cluster.message.Lumongo.ScoredResult.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = next_.toBuilder();
              }
              next_ = input.readMessage(org.lumongo.cluster.message.Lumongo.ScoredResult.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(next_);
                next_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                facetGroup_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              facetGroup_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FacetGroup.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          scoredResult_ = java.util.Collections.unmodifiableList(scoredResult_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          facetGroup_ = java.util.Collections.unmodifiableList(facetGroup_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_SegmentResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.SegmentResponse.class, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public SegmentResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SegmentResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SEGMENTNUMBER_FIELD_NUMBER = 1;
    private int segmentNumber_;
    /**
     * required uint32 segmentNumber = 1;
     */
    public boolean hasSegmentNumber() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required uint32 segmentNumber = 1;
     */
    public int getSegmentNumber() {
      return segmentNumber_;
    }

    public static final int INDEXNAME_FIELD_NUMBER = 2;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 2;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string indexName = 2;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 2;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOTALHITS_FIELD_NUMBER = 3;
    private int totalHits_;
    /**
     * required uint32 totalHits = 3;
     */
    public boolean hasTotalHits() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * required uint32 totalHits = 3;
     */
    public int getTotalHits() {
      return totalHits_;
    }

    public static final int SCOREDRESULT_FIELD_NUMBER = 4;
    private java.util.List scoredResult_;
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    public java.util.List getScoredResultList() {
      return scoredResult_;
    }
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    public java.util.List 
        getScoredResultOrBuilderList() {
      return scoredResult_;
    }
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    public int getScoredResultCount() {
      return scoredResult_.size();
    }
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResult getScoredResult(int index) {
      return scoredResult_.get(index);
    }
    /**
     * repeated .ScoredResult scoredResult = 4;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getScoredResultOrBuilder(
        int index) {
      return scoredResult_.get(index);
    }

    public static final int NEXT_FIELD_NUMBER = 5;
    private org.lumongo.cluster.message.Lumongo.ScoredResult next_;
    /**
     * optional .ScoredResult next = 5;
     */
    public boolean hasNext() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional .ScoredResult next = 5;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResult getNext() {
      return next_;
    }
    /**
     * optional .ScoredResult next = 5;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getNextOrBuilder() {
      return next_;
    }

    public static final int FACETGROUP_FIELD_NUMBER = 6;
    private java.util.List facetGroup_;
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    public java.util.List getFacetGroupList() {
      return facetGroup_;
    }
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    public java.util.List 
        getFacetGroupOrBuilderList() {
      return facetGroup_;
    }
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    public int getFacetGroupCount() {
      return facetGroup_.size();
    }
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    public org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index) {
      return facetGroup_.get(index);
    }
    /**
     * repeated .FacetGroup facetGroup = 6;
     */
    public org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
        int index) {
      return facetGroup_.get(index);
    }

    private void initFields() {
      segmentNumber_ = 0;
      indexName_ = "";
      totalHits_ = 0;
      scoredResult_ = java.util.Collections.emptyList();
      next_ = org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance();
      facetGroup_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSegmentNumber()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTotalHits()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getScoredResultCount(); i++) {
        if (!getScoredResult(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasNext()) {
        if (!getNext().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFacetGroupCount(); i++) {
        if (!getFacetGroup(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, totalHits_);
      }
      for (int i = 0; i < scoredResult_.size(); i++) {
        output.writeMessage(4, scoredResult_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(5, next_);
      }
      for (int i = 0; i < facetGroup_.size(); i++) {
        output.writeMessage(6, facetGroup_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, segmentNumber_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, totalHits_);
      }
      for (int i = 0; i < scoredResult_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, scoredResult_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, next_);
      }
      for (int i = 0; i < facetGroup_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, facetGroup_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.SegmentResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.SegmentResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SegmentResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:SegmentResponse)
        org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.SegmentResponse.class, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.SegmentResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getScoredResultFieldBuilder();
          getNextFieldBuilder();
          getFacetGroupFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        segmentNumber_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        totalHits_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (scoredResultBuilder_ == null) {
          scoredResult_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          scoredResultBuilder_.clear();
        }
        if (nextBuilder_ == null) {
          next_ = org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance();
        } else {
          nextBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (facetGroupBuilder_ == null) {
          facetGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          facetGroupBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_SegmentResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.SegmentResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.SegmentResponse build() {
        org.lumongo.cluster.message.Lumongo.SegmentResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.SegmentResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.SegmentResponse result = new org.lumongo.cluster.message.Lumongo.SegmentResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.segmentNumber_ = segmentNumber_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.totalHits_ = totalHits_;
        if (scoredResultBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            scoredResult_ = java.util.Collections.unmodifiableList(scoredResult_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.scoredResult_ = scoredResult_;
        } else {
          result.scoredResult_ = scoredResultBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        if (nextBuilder_ == null) {
          result.next_ = next_;
        } else {
          result.next_ = nextBuilder_.build();
        }
        if (facetGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            facetGroup_ = java.util.Collections.unmodifiableList(facetGroup_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.facetGroup_ = facetGroup_;
        } else {
          result.facetGroup_ = facetGroupBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.SegmentResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.SegmentResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.SegmentResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.SegmentResponse.getDefaultInstance()) return this;
        if (other.hasSegmentNumber()) {
          setSegmentNumber(other.getSegmentNumber());
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000002;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasTotalHits()) {
          setTotalHits(other.getTotalHits());
        }
        if (scoredResultBuilder_ == null) {
          if (!other.scoredResult_.isEmpty()) {
            if (scoredResult_.isEmpty()) {
              scoredResult_ = other.scoredResult_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureScoredResultIsMutable();
              scoredResult_.addAll(other.scoredResult_);
            }
            onChanged();
          }
        } else {
          if (!other.scoredResult_.isEmpty()) {
            if (scoredResultBuilder_.isEmpty()) {
              scoredResultBuilder_.dispose();
              scoredResultBuilder_ = null;
              scoredResult_ = other.scoredResult_;
              bitField0_ = (bitField0_ & ~0x00000008);
              scoredResultBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getScoredResultFieldBuilder() : null;
            } else {
              scoredResultBuilder_.addAllMessages(other.scoredResult_);
            }
          }
        }
        if (other.hasNext()) {
          mergeNext(other.getNext());
        }
        if (facetGroupBuilder_ == null) {
          if (!other.facetGroup_.isEmpty()) {
            if (facetGroup_.isEmpty()) {
              facetGroup_ = other.facetGroup_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureFacetGroupIsMutable();
              facetGroup_.addAll(other.facetGroup_);
            }
            onChanged();
          }
        } else {
          if (!other.facetGroup_.isEmpty()) {
            if (facetGroupBuilder_.isEmpty()) {
              facetGroupBuilder_.dispose();
              facetGroupBuilder_ = null;
              facetGroup_ = other.facetGroup_;
              bitField0_ = (bitField0_ & ~0x00000020);
              facetGroupBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFacetGroupFieldBuilder() : null;
            } else {
              facetGroupBuilder_.addAllMessages(other.facetGroup_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSegmentNumber()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasTotalHits()) {
          
          return false;
        }
        for (int i = 0; i < getScoredResultCount(); i++) {
          if (!getScoredResult(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasNext()) {
          if (!getNext().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getFacetGroupCount(); i++) {
          if (!getFacetGroup(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.SegmentResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.SegmentResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int segmentNumber_ ;
      /**
       * required uint32 segmentNumber = 1;
       */
      public boolean hasSegmentNumber() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public int getSegmentNumber() {
        return segmentNumber_;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder setSegmentNumber(int value) {
        bitField0_ |= 0x00000001;
        segmentNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 segmentNumber = 1;
       */
      public Builder clearSegmentNumber() {
        bitField0_ = (bitField0_ & ~0x00000001);
        segmentNumber_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 2;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string indexName = 2;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }

      private int totalHits_ ;
      /**
       * required uint32 totalHits = 3;
       */
      public boolean hasTotalHits() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required uint32 totalHits = 3;
       */
      public int getTotalHits() {
        return totalHits_;
      }
      /**
       * required uint32 totalHits = 3;
       */
      public Builder setTotalHits(int value) {
        bitField0_ |= 0x00000004;
        totalHits_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 totalHits = 3;
       */
      public Builder clearTotalHits() {
        bitField0_ = (bitField0_ & ~0x00000004);
        totalHits_ = 0;
        onChanged();
        return this;
      }

      private java.util.List scoredResult_ =
        java.util.Collections.emptyList();
      private void ensureScoredResultIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          scoredResult_ = new java.util.ArrayList(scoredResult_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> scoredResultBuilder_;

      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public java.util.List getScoredResultList() {
        if (scoredResultBuilder_ == null) {
          return java.util.Collections.unmodifiableList(scoredResult_);
        } else {
          return scoredResultBuilder_.getMessageList();
        }
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public int getScoredResultCount() {
        if (scoredResultBuilder_ == null) {
          return scoredResult_.size();
        } else {
          return scoredResultBuilder_.getCount();
        }
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult getScoredResult(int index) {
        if (scoredResultBuilder_ == null) {
          return scoredResult_.get(index);
        } else {
          return scoredResultBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder setScoredResult(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (scoredResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScoredResultIsMutable();
          scoredResult_.set(index, value);
          onChanged();
        } else {
          scoredResultBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder setScoredResult(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (scoredResultBuilder_ == null) {
          ensureScoredResultIsMutable();
          scoredResult_.set(index, builderForValue.build());
          onChanged();
        } else {
          scoredResultBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder addScoredResult(org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (scoredResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScoredResultIsMutable();
          scoredResult_.add(value);
          onChanged();
        } else {
          scoredResultBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder addScoredResult(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (scoredResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScoredResultIsMutable();
          scoredResult_.add(index, value);
          onChanged();
        } else {
          scoredResultBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder addScoredResult(
          org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (scoredResultBuilder_ == null) {
          ensureScoredResultIsMutable();
          scoredResult_.add(builderForValue.build());
          onChanged();
        } else {
          scoredResultBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder addScoredResult(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (scoredResultBuilder_ == null) {
          ensureScoredResultIsMutable();
          scoredResult_.add(index, builderForValue.build());
          onChanged();
        } else {
          scoredResultBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder addAllScoredResult(
          java.lang.Iterable values) {
        if (scoredResultBuilder_ == null) {
          ensureScoredResultIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, scoredResult_);
          onChanged();
        } else {
          scoredResultBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder clearScoredResult() {
        if (scoredResultBuilder_ == null) {
          scoredResult_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          scoredResultBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public Builder removeScoredResult(int index) {
        if (scoredResultBuilder_ == null) {
          ensureScoredResultIsMutable();
          scoredResult_.remove(index);
          onChanged();
        } else {
          scoredResultBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder getScoredResultBuilder(
          int index) {
        return getScoredResultFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getScoredResultOrBuilder(
          int index) {
        if (scoredResultBuilder_ == null) {
          return scoredResult_.get(index);  } else {
          return scoredResultBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public java.util.List 
           getScoredResultOrBuilderList() {
        if (scoredResultBuilder_ != null) {
          return scoredResultBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(scoredResult_);
        }
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addScoredResultBuilder() {
        return getScoredResultFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addScoredResultBuilder(
          int index) {
        return getScoredResultFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult scoredResult = 4;
       */
      public java.util.List 
           getScoredResultBuilderList() {
        return getScoredResultFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> 
          getScoredResultFieldBuilder() {
        if (scoredResultBuilder_ == null) {
          scoredResultBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder>(
                  scoredResult_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          scoredResult_ = null;
        }
        return scoredResultBuilder_;
      }

      private org.lumongo.cluster.message.Lumongo.ScoredResult next_ = org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> nextBuilder_;
      /**
       * optional .ScoredResult next = 5;
       */
      public boolean hasNext() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult getNext() {
        if (nextBuilder_ == null) {
          return next_;
        } else {
          return nextBuilder_.getMessage();
        }
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public Builder setNext(org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (nextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          next_ = value;
          onChanged();
        } else {
          nextBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public Builder setNext(
          org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (nextBuilder_ == null) {
          next_ = builderForValue.build();
          onChanged();
        } else {
          nextBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public Builder mergeNext(org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (nextBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              next_ != org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance()) {
            next_ =
              org.lumongo.cluster.message.Lumongo.ScoredResult.newBuilder(next_).mergeFrom(value).buildPartial();
          } else {
            next_ = value;
          }
          onChanged();
        } else {
          nextBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public Builder clearNext() {
        if (nextBuilder_ == null) {
          next_ = org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance();
          onChanged();
        } else {
          nextBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder getNextBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getNextFieldBuilder().getBuilder();
      }
      /**
       * optional .ScoredResult next = 5;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getNextOrBuilder() {
        if (nextBuilder_ != null) {
          return nextBuilder_.getMessageOrBuilder();
        } else {
          return next_;
        }
      }
      /**
       * optional .ScoredResult next = 5;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> 
          getNextFieldBuilder() {
        if (nextBuilder_ == null) {
          nextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder>(
                  getNext(),
                  getParentForChildren(),
                  isClean());
          next_ = null;
        }
        return nextBuilder_;
      }

      private java.util.List facetGroup_ =
        java.util.Collections.emptyList();
      private void ensureFacetGroupIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          facetGroup_ = new java.util.ArrayList(facetGroup_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder> facetGroupBuilder_;

      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public java.util.List getFacetGroupList() {
        if (facetGroupBuilder_ == null) {
          return java.util.Collections.unmodifiableList(facetGroup_);
        } else {
          return facetGroupBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public int getFacetGroupCount() {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.size();
        } else {
          return facetGroupBuilder_.getCount();
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index) {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.get(index);
        } else {
          return facetGroupBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder setFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.set(index, value);
          onChanged();
        } else {
          facetGroupBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder setFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.set(index, builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder addFacetGroup(org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.add(value);
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder addFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.add(index, value);
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder addFacetGroup(
          org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.add(builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder addFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.add(index, builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder addAllFacetGroup(
          java.lang.Iterable values) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, facetGroup_);
          onChanged();
        } else {
          facetGroupBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder clearFacetGroup() {
        if (facetGroupBuilder_ == null) {
          facetGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          facetGroupBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public Builder removeFacetGroup(int index) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.remove(index);
          onChanged();
        } else {
          facetGroupBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder getFacetGroupBuilder(
          int index) {
        return getFacetGroupFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
          int index) {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.get(index);  } else {
          return facetGroupBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public java.util.List 
           getFacetGroupOrBuilderList() {
        if (facetGroupBuilder_ != null) {
          return facetGroupBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(facetGroup_);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder addFacetGroupBuilder() {
        return getFacetGroupFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance());
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder addFacetGroupBuilder(
          int index) {
        return getFacetGroupFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance());
      }
      /**
       * repeated .FacetGroup facetGroup = 6;
       */
      public java.util.List 
           getFacetGroupBuilderList() {
        return getFacetGroupFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder> 
          getFacetGroupFieldBuilder() {
        if (facetGroupBuilder_ == null) {
          facetGroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder>(
                  facetGroup_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          facetGroup_ = null;
        }
        return facetGroupBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:SegmentResponse)
    }

    static {
      defaultInstance = new SegmentResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SegmentResponse)
  }

  public interface LastIndexResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LastIndexResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    java.util.List 
        getLastForSegmentList();
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResult getLastForSegment(int index);
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    int getLastForSegmentCount();
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    java.util.List 
        getLastForSegmentOrBuilderList();
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getLastForSegmentOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code LastIndexResult}
   */
  public static final class LastIndexResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LastIndexResult)
      LastIndexResultOrBuilder {
    // Use LastIndexResult.newBuilder() to construct.
    private LastIndexResult(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LastIndexResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LastIndexResult defaultInstance;
    public static LastIndexResult getDefaultInstance() {
      return defaultInstance;
    }

    public LastIndexResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LastIndexResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                lastForSegment_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              lastForSegment_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.ScoredResult.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          lastForSegment_ = java.util.Collections.unmodifiableList(lastForSegment_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LastIndexResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LastIndexResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LastIndexResult.class, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LastIndexResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LastIndexResult(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LASTFORSEGMENT_FIELD_NUMBER = 2;
    private java.util.List lastForSegment_;
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    public java.util.List getLastForSegmentList() {
      return lastForSegment_;
    }
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    public java.util.List 
        getLastForSegmentOrBuilderList() {
      return lastForSegment_;
    }
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    public int getLastForSegmentCount() {
      return lastForSegment_.size();
    }
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResult getLastForSegment(int index) {
      return lastForSegment_.get(index);
    }
    /**
     * repeated .ScoredResult lastForSegment = 2;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getLastForSegmentOrBuilder(
        int index) {
      return lastForSegment_.get(index);
    }

    private void initFields() {
      indexName_ = "";
      lastForSegment_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getLastForSegmentCount(); i++) {
        if (!getLastForSegment(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      for (int i = 0; i < lastForSegment_.size(); i++) {
        output.writeMessage(2, lastForSegment_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      for (int i = 0; i < lastForSegment_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, lastForSegment_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastIndexResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LastIndexResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LastIndexResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LastIndexResult)
        org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastIndexResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastIndexResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LastIndexResult.class, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LastIndexResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLastForSegmentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (lastForSegmentBuilder_ == null) {
          lastForSegment_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          lastForSegmentBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastIndexResult_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LastIndexResult getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LastIndexResult.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LastIndexResult build() {
        org.lumongo.cluster.message.Lumongo.LastIndexResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LastIndexResult buildPartial() {
        org.lumongo.cluster.message.Lumongo.LastIndexResult result = new org.lumongo.cluster.message.Lumongo.LastIndexResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (lastForSegmentBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            lastForSegment_ = java.util.Collections.unmodifiableList(lastForSegment_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.lastForSegment_ = lastForSegment_;
        } else {
          result.lastForSegment_ = lastForSegmentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LastIndexResult) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LastIndexResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LastIndexResult other) {
        if (other == org.lumongo.cluster.message.Lumongo.LastIndexResult.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (lastForSegmentBuilder_ == null) {
          if (!other.lastForSegment_.isEmpty()) {
            if (lastForSegment_.isEmpty()) {
              lastForSegment_ = other.lastForSegment_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLastForSegmentIsMutable();
              lastForSegment_.addAll(other.lastForSegment_);
            }
            onChanged();
          }
        } else {
          if (!other.lastForSegment_.isEmpty()) {
            if (lastForSegmentBuilder_.isEmpty()) {
              lastForSegmentBuilder_.dispose();
              lastForSegmentBuilder_ = null;
              lastForSegment_ = other.lastForSegment_;
              bitField0_ = (bitField0_ & ~0x00000002);
              lastForSegmentBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLastForSegmentFieldBuilder() : null;
            } else {
              lastForSegmentBuilder_.addAllMessages(other.lastForSegment_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        for (int i = 0; i < getLastForSegmentCount(); i++) {
          if (!getLastForSegment(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LastIndexResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LastIndexResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.util.List lastForSegment_ =
        java.util.Collections.emptyList();
      private void ensureLastForSegmentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          lastForSegment_ = new java.util.ArrayList(lastForSegment_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> lastForSegmentBuilder_;

      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public java.util.List getLastForSegmentList() {
        if (lastForSegmentBuilder_ == null) {
          return java.util.Collections.unmodifiableList(lastForSegment_);
        } else {
          return lastForSegmentBuilder_.getMessageList();
        }
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public int getLastForSegmentCount() {
        if (lastForSegmentBuilder_ == null) {
          return lastForSegment_.size();
        } else {
          return lastForSegmentBuilder_.getCount();
        }
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult getLastForSegment(int index) {
        if (lastForSegmentBuilder_ == null) {
          return lastForSegment_.get(index);
        } else {
          return lastForSegmentBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder setLastForSegment(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (lastForSegmentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastForSegmentIsMutable();
          lastForSegment_.set(index, value);
          onChanged();
        } else {
          lastForSegmentBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder setLastForSegment(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (lastForSegmentBuilder_ == null) {
          ensureLastForSegmentIsMutable();
          lastForSegment_.set(index, builderForValue.build());
          onChanged();
        } else {
          lastForSegmentBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder addLastForSegment(org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (lastForSegmentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastForSegmentIsMutable();
          lastForSegment_.add(value);
          onChanged();
        } else {
          lastForSegmentBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder addLastForSegment(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (lastForSegmentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastForSegmentIsMutable();
          lastForSegment_.add(index, value);
          onChanged();
        } else {
          lastForSegmentBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder addLastForSegment(
          org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (lastForSegmentBuilder_ == null) {
          ensureLastForSegmentIsMutable();
          lastForSegment_.add(builderForValue.build());
          onChanged();
        } else {
          lastForSegmentBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder addLastForSegment(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (lastForSegmentBuilder_ == null) {
          ensureLastForSegmentIsMutable();
          lastForSegment_.add(index, builderForValue.build());
          onChanged();
        } else {
          lastForSegmentBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder addAllLastForSegment(
          java.lang.Iterable values) {
        if (lastForSegmentBuilder_ == null) {
          ensureLastForSegmentIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, lastForSegment_);
          onChanged();
        } else {
          lastForSegmentBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder clearLastForSegment() {
        if (lastForSegmentBuilder_ == null) {
          lastForSegment_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          lastForSegmentBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public Builder removeLastForSegment(int index) {
        if (lastForSegmentBuilder_ == null) {
          ensureLastForSegmentIsMutable();
          lastForSegment_.remove(index);
          onChanged();
        } else {
          lastForSegmentBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder getLastForSegmentBuilder(
          int index) {
        return getLastForSegmentFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getLastForSegmentOrBuilder(
          int index) {
        if (lastForSegmentBuilder_ == null) {
          return lastForSegment_.get(index);  } else {
          return lastForSegmentBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public java.util.List 
           getLastForSegmentOrBuilderList() {
        if (lastForSegmentBuilder_ != null) {
          return lastForSegmentBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(lastForSegment_);
        }
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addLastForSegmentBuilder() {
        return getLastForSegmentFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addLastForSegmentBuilder(
          int index) {
        return getLastForSegmentFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult lastForSegment = 2;
       */
      public java.util.List 
           getLastForSegmentBuilderList() {
        return getLastForSegmentFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> 
          getLastForSegmentFieldBuilder() {
        if (lastForSegmentBuilder_ == null) {
          lastForSegmentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder>(
                  lastForSegment_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          lastForSegment_ = null;
        }
        return lastForSegmentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:LastIndexResult)
    }

    static {
      defaultInstance = new LastIndexResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LastIndexResult)
  }

  public interface LastResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:LastResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    java.util.List 
        getLastIndexResultList();
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    org.lumongo.cluster.message.Lumongo.LastIndexResult getLastIndexResult(int index);
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    int getLastIndexResultCount();
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    java.util.List 
        getLastIndexResultOrBuilderList();
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder getLastIndexResultOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code LastResult}
   */
  public static final class LastResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:LastResult)
      LastResultOrBuilder {
    // Use LastResult.newBuilder() to construct.
    private LastResult(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LastResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final LastResult defaultInstance;
    public static LastResult getDefaultInstance() {
      return defaultInstance;
    }

    public LastResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LastResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                lastIndexResult_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              lastIndexResult_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.LastIndexResult.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          lastIndexResult_ = java.util.Collections.unmodifiableList(lastIndexResult_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LastResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_LastResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.LastResult.class, org.lumongo.cluster.message.Lumongo.LastResult.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public LastResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LastResult(input, extensionRegistry);
      }
    };

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

    public static final int LASTINDEXRESULT_FIELD_NUMBER = 1;
    private java.util.List lastIndexResult_;
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    public java.util.List getLastIndexResultList() {
      return lastIndexResult_;
    }
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    public java.util.List 
        getLastIndexResultOrBuilderList() {
      return lastIndexResult_;
    }
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    public int getLastIndexResultCount() {
      return lastIndexResult_.size();
    }
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LastIndexResult getLastIndexResult(int index) {
      return lastIndexResult_.get(index);
    }
    /**
     * repeated .LastIndexResult lastIndexResult = 1;
     */
    public org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder getLastIndexResultOrBuilder(
        int index) {
      return lastIndexResult_.get(index);
    }

    private void initFields() {
      lastIndexResult_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getLastIndexResultCount(); i++) {
        if (!getLastIndexResult(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < lastIndexResult_.size(); i++) {
        output.writeMessage(1, lastIndexResult_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < lastIndexResult_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, lastIndexResult_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.LastResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.LastResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code LastResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:LastResult)
        org.lumongo.cluster.message.Lumongo.LastResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.LastResult.class, org.lumongo.cluster.message.Lumongo.LastResult.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.LastResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLastIndexResultFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (lastIndexResultBuilder_ == null) {
          lastIndexResult_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          lastIndexResultBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_LastResult_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.LastResult getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.LastResult build() {
        org.lumongo.cluster.message.Lumongo.LastResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.LastResult buildPartial() {
        org.lumongo.cluster.message.Lumongo.LastResult result = new org.lumongo.cluster.message.Lumongo.LastResult(this);
        int from_bitField0_ = bitField0_;
        if (lastIndexResultBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            lastIndexResult_ = java.util.Collections.unmodifiableList(lastIndexResult_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.lastIndexResult_ = lastIndexResult_;
        } else {
          result.lastIndexResult_ = lastIndexResultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.LastResult) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.LastResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.LastResult other) {
        if (other == org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance()) return this;
        if (lastIndexResultBuilder_ == null) {
          if (!other.lastIndexResult_.isEmpty()) {
            if (lastIndexResult_.isEmpty()) {
              lastIndexResult_ = other.lastIndexResult_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLastIndexResultIsMutable();
              lastIndexResult_.addAll(other.lastIndexResult_);
            }
            onChanged();
          }
        } else {
          if (!other.lastIndexResult_.isEmpty()) {
            if (lastIndexResultBuilder_.isEmpty()) {
              lastIndexResultBuilder_.dispose();
              lastIndexResultBuilder_ = null;
              lastIndexResult_ = other.lastIndexResult_;
              bitField0_ = (bitField0_ & ~0x00000001);
              lastIndexResultBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLastIndexResultFieldBuilder() : null;
            } else {
              lastIndexResultBuilder_.addAllMessages(other.lastIndexResult_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getLastIndexResultCount(); i++) {
          if (!getLastIndexResult(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.LastResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.LastResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List lastIndexResult_ =
        java.util.Collections.emptyList();
      private void ensureLastIndexResultIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          lastIndexResult_ = new java.util.ArrayList(lastIndexResult_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastIndexResult, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder, org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder> lastIndexResultBuilder_;

      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public java.util.List getLastIndexResultList() {
        if (lastIndexResultBuilder_ == null) {
          return java.util.Collections.unmodifiableList(lastIndexResult_);
        } else {
          return lastIndexResultBuilder_.getMessageList();
        }
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public int getLastIndexResultCount() {
        if (lastIndexResultBuilder_ == null) {
          return lastIndexResult_.size();
        } else {
          return lastIndexResultBuilder_.getCount();
        }
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LastIndexResult getLastIndexResult(int index) {
        if (lastIndexResultBuilder_ == null) {
          return lastIndexResult_.get(index);
        } else {
          return lastIndexResultBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder setLastIndexResult(
          int index, org.lumongo.cluster.message.Lumongo.LastIndexResult value) {
        if (lastIndexResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastIndexResultIsMutable();
          lastIndexResult_.set(index, value);
          onChanged();
        } else {
          lastIndexResultBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder setLastIndexResult(
          int index, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder builderForValue) {
        if (lastIndexResultBuilder_ == null) {
          ensureLastIndexResultIsMutable();
          lastIndexResult_.set(index, builderForValue.build());
          onChanged();
        } else {
          lastIndexResultBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder addLastIndexResult(org.lumongo.cluster.message.Lumongo.LastIndexResult value) {
        if (lastIndexResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastIndexResultIsMutable();
          lastIndexResult_.add(value);
          onChanged();
        } else {
          lastIndexResultBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder addLastIndexResult(
          int index, org.lumongo.cluster.message.Lumongo.LastIndexResult value) {
        if (lastIndexResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLastIndexResultIsMutable();
          lastIndexResult_.add(index, value);
          onChanged();
        } else {
          lastIndexResultBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder addLastIndexResult(
          org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder builderForValue) {
        if (lastIndexResultBuilder_ == null) {
          ensureLastIndexResultIsMutable();
          lastIndexResult_.add(builderForValue.build());
          onChanged();
        } else {
          lastIndexResultBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder addLastIndexResult(
          int index, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder builderForValue) {
        if (lastIndexResultBuilder_ == null) {
          ensureLastIndexResultIsMutable();
          lastIndexResult_.add(index, builderForValue.build());
          onChanged();
        } else {
          lastIndexResultBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder addAllLastIndexResult(
          java.lang.Iterable values) {
        if (lastIndexResultBuilder_ == null) {
          ensureLastIndexResultIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, lastIndexResult_);
          onChanged();
        } else {
          lastIndexResultBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder clearLastIndexResult() {
        if (lastIndexResultBuilder_ == null) {
          lastIndexResult_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          lastIndexResultBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public Builder removeLastIndexResult(int index) {
        if (lastIndexResultBuilder_ == null) {
          ensureLastIndexResultIsMutable();
          lastIndexResult_.remove(index);
          onChanged();
        } else {
          lastIndexResultBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder getLastIndexResultBuilder(
          int index) {
        return getLastIndexResultFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder getLastIndexResultOrBuilder(
          int index) {
        if (lastIndexResultBuilder_ == null) {
          return lastIndexResult_.get(index);  } else {
          return lastIndexResultBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public java.util.List 
           getLastIndexResultOrBuilderList() {
        if (lastIndexResultBuilder_ != null) {
          return lastIndexResultBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(lastIndexResult_);
        }
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder addLastIndexResultBuilder() {
        return getLastIndexResultFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.LastIndexResult.getDefaultInstance());
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder addLastIndexResultBuilder(
          int index) {
        return getLastIndexResultFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.LastIndexResult.getDefaultInstance());
      }
      /**
       * repeated .LastIndexResult lastIndexResult = 1;
       */
      public java.util.List 
           getLastIndexResultBuilderList() {
        return getLastIndexResultFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastIndexResult, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder, org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder> 
          getLastIndexResultFieldBuilder() {
        if (lastIndexResultBuilder_ == null) {
          lastIndexResultBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LastIndexResult, org.lumongo.cluster.message.Lumongo.LastIndexResult.Builder, org.lumongo.cluster.message.Lumongo.LastIndexResultOrBuilder>(
                  lastIndexResult_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          lastIndexResult_ = null;
        }
        return lastIndexResultBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:LastResult)
    }

    static {
      defaultInstance = new LastResult(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:LastResult)
  }

  public interface InternalQueryResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:InternalQueryResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    java.util.List 
        getIndexSegmentResponseList();
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    org.lumongo.cluster.message.Lumongo.IndexSegmentResponse getIndexSegmentResponse(int index);
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    int getIndexSegmentResponseCount();
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    java.util.List 
        getIndexSegmentResponseOrBuilderList();
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder getIndexSegmentResponseOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code InternalQueryResponse}
   */
  public static final class InternalQueryResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:InternalQueryResponse)
      InternalQueryResponseOrBuilder {
    // Use InternalQueryResponse.newBuilder() to construct.
    private InternalQueryResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private InternalQueryResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final InternalQueryResponse defaultInstance;
    public static InternalQueryResponse getDefaultInstance() {
      return defaultInstance;
    }

    public InternalQueryResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private InternalQueryResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                indexSegmentResponse_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              indexSegmentResponse_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          indexSegmentResponse_ = java.util.Collections.unmodifiableList(indexSegmentResponse_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_InternalQueryResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_InternalQueryResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.InternalQueryResponse.class, org.lumongo.cluster.message.Lumongo.InternalQueryResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public InternalQueryResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new InternalQueryResponse(input, extensionRegistry);
      }
    };

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

    public static final int INDEXSEGMENTRESPONSE_FIELD_NUMBER = 1;
    private java.util.List indexSegmentResponse_;
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    public java.util.List getIndexSegmentResponseList() {
      return indexSegmentResponse_;
    }
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    public java.util.List 
        getIndexSegmentResponseOrBuilderList() {
      return indexSegmentResponse_;
    }
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    public int getIndexSegmentResponseCount() {
      return indexSegmentResponse_.size();
    }
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse getIndexSegmentResponse(int index) {
      return indexSegmentResponse_.get(index);
    }
    /**
     * repeated .IndexSegmentResponse indexSegmentResponse = 1;
     */
    public org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder getIndexSegmentResponseOrBuilder(
        int index) {
      return indexSegmentResponse_.get(index);
    }

    private void initFields() {
      indexSegmentResponse_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getIndexSegmentResponseCount(); i++) {
        if (!getIndexSegmentResponse(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < indexSegmentResponse_.size(); i++) {
        output.writeMessage(1, indexSegmentResponse_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < indexSegmentResponse_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, indexSegmentResponse_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.InternalQueryResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.InternalQueryResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code InternalQueryResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:InternalQueryResponse)
        org.lumongo.cluster.message.Lumongo.InternalQueryResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_InternalQueryResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_InternalQueryResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.InternalQueryResponse.class, org.lumongo.cluster.message.Lumongo.InternalQueryResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.InternalQueryResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexSegmentResponseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (indexSegmentResponseBuilder_ == null) {
          indexSegmentResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          indexSegmentResponseBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_InternalQueryResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.InternalQueryResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.InternalQueryResponse build() {
        org.lumongo.cluster.message.Lumongo.InternalQueryResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.InternalQueryResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.InternalQueryResponse result = new org.lumongo.cluster.message.Lumongo.InternalQueryResponse(this);
        int from_bitField0_ = bitField0_;
        if (indexSegmentResponseBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            indexSegmentResponse_ = java.util.Collections.unmodifiableList(indexSegmentResponse_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.indexSegmentResponse_ = indexSegmentResponse_;
        } else {
          result.indexSegmentResponse_ = indexSegmentResponseBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.InternalQueryResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.InternalQueryResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.InternalQueryResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance()) return this;
        if (indexSegmentResponseBuilder_ == null) {
          if (!other.indexSegmentResponse_.isEmpty()) {
            if (indexSegmentResponse_.isEmpty()) {
              indexSegmentResponse_ = other.indexSegmentResponse_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureIndexSegmentResponseIsMutable();
              indexSegmentResponse_.addAll(other.indexSegmentResponse_);
            }
            onChanged();
          }
        } else {
          if (!other.indexSegmentResponse_.isEmpty()) {
            if (indexSegmentResponseBuilder_.isEmpty()) {
              indexSegmentResponseBuilder_.dispose();
              indexSegmentResponseBuilder_ = null;
              indexSegmentResponse_ = other.indexSegmentResponse_;
              bitField0_ = (bitField0_ & ~0x00000001);
              indexSegmentResponseBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIndexSegmentResponseFieldBuilder() : null;
            } else {
              indexSegmentResponseBuilder_.addAllMessages(other.indexSegmentResponse_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getIndexSegmentResponseCount(); i++) {
          if (!getIndexSegmentResponse(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.InternalQueryResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.InternalQueryResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List indexSegmentResponse_ =
        java.util.Collections.emptyList();
      private void ensureIndexSegmentResponseIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          indexSegmentResponse_ = new java.util.ArrayList(indexSegmentResponse_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSegmentResponse, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder> indexSegmentResponseBuilder_;

      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public java.util.List getIndexSegmentResponseList() {
        if (indexSegmentResponseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexSegmentResponse_);
        } else {
          return indexSegmentResponseBuilder_.getMessageList();
        }
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public int getIndexSegmentResponseCount() {
        if (indexSegmentResponseBuilder_ == null) {
          return indexSegmentResponse_.size();
        } else {
          return indexSegmentResponseBuilder_.getCount();
        }
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse getIndexSegmentResponse(int index) {
        if (indexSegmentResponseBuilder_ == null) {
          return indexSegmentResponse_.get(index);
        } else {
          return indexSegmentResponseBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder setIndexSegmentResponse(
          int index, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse value) {
        if (indexSegmentResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.set(index, value);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder setIndexSegmentResponse(
          int index, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder builderForValue) {
        if (indexSegmentResponseBuilder_ == null) {
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexSegmentResponseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder addIndexSegmentResponse(org.lumongo.cluster.message.Lumongo.IndexSegmentResponse value) {
        if (indexSegmentResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.add(value);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder addIndexSegmentResponse(
          int index, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse value) {
        if (indexSegmentResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.add(index, value);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder addIndexSegmentResponse(
          org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder builderForValue) {
        if (indexSegmentResponseBuilder_ == null) {
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.add(builderForValue.build());
          onChanged();
        } else {
          indexSegmentResponseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder addIndexSegmentResponse(
          int index, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder builderForValue) {
        if (indexSegmentResponseBuilder_ == null) {
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexSegmentResponseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder addAllIndexSegmentResponse(
          java.lang.Iterable values) {
        if (indexSegmentResponseBuilder_ == null) {
          ensureIndexSegmentResponseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexSegmentResponse_);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder clearIndexSegmentResponse() {
        if (indexSegmentResponseBuilder_ == null) {
          indexSegmentResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public Builder removeIndexSegmentResponse(int index) {
        if (indexSegmentResponseBuilder_ == null) {
          ensureIndexSegmentResponseIsMutable();
          indexSegmentResponse_.remove(index);
          onChanged();
        } else {
          indexSegmentResponseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder getIndexSegmentResponseBuilder(
          int index) {
        return getIndexSegmentResponseFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder getIndexSegmentResponseOrBuilder(
          int index) {
        if (indexSegmentResponseBuilder_ == null) {
          return indexSegmentResponse_.get(index);  } else {
          return indexSegmentResponseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public java.util.List 
           getIndexSegmentResponseOrBuilderList() {
        if (indexSegmentResponseBuilder_ != null) {
          return indexSegmentResponseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexSegmentResponse_);
        }
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder addIndexSegmentResponseBuilder() {
        return getIndexSegmentResponseFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.getDefaultInstance());
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder addIndexSegmentResponseBuilder(
          int index) {
        return getIndexSegmentResponseFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.getDefaultInstance());
      }
      /**
       * repeated .IndexSegmentResponse indexSegmentResponse = 1;
       */
      public java.util.List 
           getIndexSegmentResponseBuilderList() {
        return getIndexSegmentResponseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.IndexSegmentResponse, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder> 
          getIndexSegmentResponseFieldBuilder() {
        if (indexSegmentResponseBuilder_ == null) {
          indexSegmentResponseBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.IndexSegmentResponse, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder>(
                  indexSegmentResponse_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          indexSegmentResponse_ = null;
        }
        return indexSegmentResponseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:InternalQueryResponse)
    }

    static {
      defaultInstance = new InternalQueryResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:InternalQueryResponse)
  }

  public interface IndexSegmentResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IndexSegmentResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    java.util.List 
        getSegmentReponseList();
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    org.lumongo.cluster.message.Lumongo.SegmentResponse getSegmentReponse(int index);
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    int getSegmentReponseCount();
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    java.util.List 
        getSegmentReponseOrBuilderList();
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder getSegmentReponseOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code IndexSegmentResponse}
   */
  public static final class IndexSegmentResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:IndexSegmentResponse)
      IndexSegmentResponseOrBuilder {
    // Use IndexSegmentResponse.newBuilder() to construct.
    private IndexSegmentResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexSegmentResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexSegmentResponse defaultInstance;
    public static IndexSegmentResponse getDefaultInstance() {
      return defaultInstance;
    }

    public IndexSegmentResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexSegmentResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                segmentReponse_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              segmentReponse_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.SegmentResponse.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          segmentReponse_ = java.util.Collections.unmodifiableList(segmentReponse_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSegmentResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_IndexSegmentResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.class, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public IndexSegmentResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexSegmentResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SEGMENTREPONSE_FIELD_NUMBER = 2;
    private java.util.List segmentReponse_;
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    public java.util.List getSegmentReponseList() {
      return segmentReponse_;
    }
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    public java.util.List 
        getSegmentReponseOrBuilderList() {
      return segmentReponse_;
    }
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    public int getSegmentReponseCount() {
      return segmentReponse_.size();
    }
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentResponse getSegmentReponse(int index) {
      return segmentReponse_.get(index);
    }
    /**
     * repeated .SegmentResponse segmentReponse = 2;
     */
    public org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder getSegmentReponseOrBuilder(
        int index) {
      return segmentReponse_.get(index);
    }

    private void initFields() {
      indexName_ = "";
      segmentReponse_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSegmentReponseCount(); i++) {
        if (!getSegmentReponse(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      for (int i = 0; i < segmentReponse_.size(); i++) {
        output.writeMessage(2, segmentReponse_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      for (int i = 0; i < segmentReponse_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, segmentReponse_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.IndexSegmentResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code IndexSegmentResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:IndexSegmentResponse)
        org.lumongo.cluster.message.Lumongo.IndexSegmentResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSegmentResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSegmentResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.class, org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSegmentReponseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (segmentReponseBuilder_ == null) {
          segmentReponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          segmentReponseBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_IndexSegmentResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse build() {
        org.lumongo.cluster.message.Lumongo.IndexSegmentResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.IndexSegmentResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.IndexSegmentResponse result = new org.lumongo.cluster.message.Lumongo.IndexSegmentResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (segmentReponseBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            segmentReponse_ = java.util.Collections.unmodifiableList(segmentReponse_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.segmentReponse_ = segmentReponse_;
        } else {
          result.segmentReponse_ = segmentReponseBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.IndexSegmentResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.IndexSegmentResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.IndexSegmentResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.IndexSegmentResponse.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (segmentReponseBuilder_ == null) {
          if (!other.segmentReponse_.isEmpty()) {
            if (segmentReponse_.isEmpty()) {
              segmentReponse_ = other.segmentReponse_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSegmentReponseIsMutable();
              segmentReponse_.addAll(other.segmentReponse_);
            }
            onChanged();
          }
        } else {
          if (!other.segmentReponse_.isEmpty()) {
            if (segmentReponseBuilder_.isEmpty()) {
              segmentReponseBuilder_.dispose();
              segmentReponseBuilder_ = null;
              segmentReponse_ = other.segmentReponse_;
              bitField0_ = (bitField0_ & ~0x00000002);
              segmentReponseBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSegmentReponseFieldBuilder() : null;
            } else {
              segmentReponseBuilder_.addAllMessages(other.segmentReponse_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        for (int i = 0; i < getSegmentReponseCount(); i++) {
          if (!getSegmentReponse(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.IndexSegmentResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.IndexSegmentResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.util.List segmentReponse_ =
        java.util.Collections.emptyList();
      private void ensureSegmentReponseIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          segmentReponse_ = new java.util.ArrayList(segmentReponse_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentResponse, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder> segmentReponseBuilder_;

      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public java.util.List getSegmentReponseList() {
        if (segmentReponseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(segmentReponse_);
        } else {
          return segmentReponseBuilder_.getMessageList();
        }
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public int getSegmentReponseCount() {
        if (segmentReponseBuilder_ == null) {
          return segmentReponse_.size();
        } else {
          return segmentReponseBuilder_.getCount();
        }
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentResponse getSegmentReponse(int index) {
        if (segmentReponseBuilder_ == null) {
          return segmentReponse_.get(index);
        } else {
          return segmentReponseBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder setSegmentReponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentResponse value) {
        if (segmentReponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentReponseIsMutable();
          segmentReponse_.set(index, value);
          onChanged();
        } else {
          segmentReponseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder setSegmentReponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder builderForValue) {
        if (segmentReponseBuilder_ == null) {
          ensureSegmentReponseIsMutable();
          segmentReponse_.set(index, builderForValue.build());
          onChanged();
        } else {
          segmentReponseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder addSegmentReponse(org.lumongo.cluster.message.Lumongo.SegmentResponse value) {
        if (segmentReponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentReponseIsMutable();
          segmentReponse_.add(value);
          onChanged();
        } else {
          segmentReponseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder addSegmentReponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentResponse value) {
        if (segmentReponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSegmentReponseIsMutable();
          segmentReponse_.add(index, value);
          onChanged();
        } else {
          segmentReponseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder addSegmentReponse(
          org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder builderForValue) {
        if (segmentReponseBuilder_ == null) {
          ensureSegmentReponseIsMutable();
          segmentReponse_.add(builderForValue.build());
          onChanged();
        } else {
          segmentReponseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder addSegmentReponse(
          int index, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder builderForValue) {
        if (segmentReponseBuilder_ == null) {
          ensureSegmentReponseIsMutable();
          segmentReponse_.add(index, builderForValue.build());
          onChanged();
        } else {
          segmentReponseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder addAllSegmentReponse(
          java.lang.Iterable values) {
        if (segmentReponseBuilder_ == null) {
          ensureSegmentReponseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, segmentReponse_);
          onChanged();
        } else {
          segmentReponseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder clearSegmentReponse() {
        if (segmentReponseBuilder_ == null) {
          segmentReponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          segmentReponseBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public Builder removeSegmentReponse(int index) {
        if (segmentReponseBuilder_ == null) {
          ensureSegmentReponseIsMutable();
          segmentReponse_.remove(index);
          onChanged();
        } else {
          segmentReponseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder getSegmentReponseBuilder(
          int index) {
        return getSegmentReponseFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder getSegmentReponseOrBuilder(
          int index) {
        if (segmentReponseBuilder_ == null) {
          return segmentReponse_.get(index);  } else {
          return segmentReponseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public java.util.List 
           getSegmentReponseOrBuilderList() {
        if (segmentReponseBuilder_ != null) {
          return segmentReponseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(segmentReponse_);
        }
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder addSegmentReponseBuilder() {
        return getSegmentReponseFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.SegmentResponse.getDefaultInstance());
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder addSegmentReponseBuilder(
          int index) {
        return getSegmentReponseFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.SegmentResponse.getDefaultInstance());
      }
      /**
       * repeated .SegmentResponse segmentReponse = 2;
       */
      public java.util.List 
           getSegmentReponseBuilderList() {
        return getSegmentReponseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SegmentResponse, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder> 
          getSegmentReponseFieldBuilder() {
        if (segmentReponseBuilder_ == null) {
          segmentReponseBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.SegmentResponse, org.lumongo.cluster.message.Lumongo.SegmentResponse.Builder, org.lumongo.cluster.message.Lumongo.SegmentResponseOrBuilder>(
                  segmentReponse_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          segmentReponse_ = null;
        }
        return segmentReponseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:IndexSegmentResponse)
    }

    static {
      defaultInstance = new IndexSegmentResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:IndexSegmentResponse)
  }

  public interface QueryRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:QueryRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string index = 1;
     */
    com.google.protobuf.ProtocolStringList
        getIndexList();
    /**
     * repeated string index = 1;
     */
    int getIndexCount();
    /**
     * repeated string index = 1;
     */
    java.lang.String getIndex(int index);
    /**
     * repeated string index = 1;
     */
    com.google.protobuf.ByteString
        getIndexBytes(int index);

    /**
     * optional string query = 2;
     */
    boolean hasQuery();
    /**
     * optional string query = 2;
     */
    java.lang.String getQuery();
    /**
     * optional string query = 2;
     */
    com.google.protobuf.ByteString
        getQueryBytes();

    /**
     * required uint32 amount = 3;
     */
    boolean hasAmount();
    /**
     * required uint32 amount = 3;
     */
    int getAmount();

    /**
     * optional .LastResult lastResult = 4;
     */
    boolean hasLastResult();
    /**
     * optional .LastResult lastResult = 4;
     */
    org.lumongo.cluster.message.Lumongo.LastResult getLastResult();
    /**
     * optional .LastResult lastResult = 4;
     */
    org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder();

    /**
     * optional bool fetchFull = 5 [default = false];
     */
    boolean hasFetchFull();
    /**
     * optional bool fetchFull = 5 [default = false];
     */
    boolean getFetchFull();

    /**
     * optional .FacetRequest facetRequest = 7;
     */
    boolean hasFacetRequest();
    /**
     * optional .FacetRequest facetRequest = 7;
     */
    org.lumongo.cluster.message.Lumongo.FacetRequest getFacetRequest();
    /**
     * optional .FacetRequest facetRequest = 7;
     */
    org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder getFacetRequestOrBuilder();

    /**
     * optional .SortRequest sortRequest = 8;
     */
    boolean hasSortRequest();
    /**
     * optional .SortRequest sortRequest = 8;
     */
    org.lumongo.cluster.message.Lumongo.SortRequest getSortRequest();
    /**
     * optional .SortRequest sortRequest = 8;
     */
    org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder getSortRequestOrBuilder();

    /**
     * repeated string queryField = 9;
     */
    com.google.protobuf.ProtocolStringList
        getQueryFieldList();
    /**
     * repeated string queryField = 9;
     */
    int getQueryFieldCount();
    /**
     * repeated string queryField = 9;
     */
    java.lang.String getQueryField(int index);
    /**
     * repeated string queryField = 9;
     */
    com.google.protobuf.ByteString
        getQueryFieldBytes(int index);

    /**
     * repeated string filterQuery = 10;
     */
    com.google.protobuf.ProtocolStringList
        getFilterQueryList();
    /**
     * repeated string filterQuery = 10;
     */
    int getFilterQueryCount();
    /**
     * repeated string filterQuery = 10;
     */
    java.lang.String getFilterQuery(int index);
    /**
     * repeated string filterQuery = 10;
     */
    com.google.protobuf.ByteString
        getFilterQueryBytes(int index);

    /**
     * repeated string fields = 11;
     */
    com.google.protobuf.ProtocolStringList
        getFieldsList();
    /**
     * repeated string fields = 11;
     */
    int getFieldsCount();
    /**
     * repeated string fields = 11;
     */
    java.lang.String getFields(int index);
    /**
     * repeated string fields = 11;
     */
    com.google.protobuf.ByteString
        getFieldsBytes(int index);

    /**
     * optional .FetchType resultFetchType = 12 [default = NONE];
     */
    boolean hasResultFetchType();
    /**
     * optional .FetchType resultFetchType = 12 [default = NONE];
     */
    org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType();

    /**
     * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
     */
    boolean hasMinimumNumberShouldMatch();
    /**
     * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
     */
    int getMinimumNumberShouldMatch();

    /**
     * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
     */
    boolean hasDefaultOperator();
    /**
     * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
     */
    org.lumongo.cluster.message.Lumongo.QueryRequest.Operator getDefaultOperator();

    /**
     * repeated string documentFields = 15;
     */
    com.google.protobuf.ProtocolStringList
        getDocumentFieldsList();
    /**
     * repeated string documentFields = 15;
     */
    int getDocumentFieldsCount();
    /**
     * repeated string documentFields = 15;
     */
    java.lang.String getDocumentFields(int index);
    /**
     * repeated string documentFields = 15;
     */
    com.google.protobuf.ByteString
        getDocumentFieldsBytes(int index);

    /**
     * repeated string documentMaskedFields = 16;
     */
    com.google.protobuf.ProtocolStringList
        getDocumentMaskedFieldsList();
    /**
     * repeated string documentMaskedFields = 16;
     */
    int getDocumentMaskedFieldsCount();
    /**
     * repeated string documentMaskedFields = 16;
     */
    java.lang.String getDocumentMaskedFields(int index);
    /**
     * repeated string documentMaskedFields = 16;
     */
    com.google.protobuf.ByteString
        getDocumentMaskedFieldsBytes(int index);
  }
  /**
   * Protobuf type {@code QueryRequest}
   */
  public static final class QueryRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:QueryRequest)
      QueryRequestOrBuilder {
    // Use QueryRequest.newBuilder() to construct.
    private QueryRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private QueryRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final QueryRequest defaultInstance;
    public static QueryRequest getDefaultInstance() {
      return defaultInstance;
    }

    public QueryRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private QueryRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                index_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              index_.add(bs);
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              query_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              amount_ = input.readUInt32();
              break;
            }
            case 34: {
              org.lumongo.cluster.message.Lumongo.LastResult.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = lastResult_.toBuilder();
              }
              lastResult_ = input.readMessage(org.lumongo.cluster.message.Lumongo.LastResult.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(lastResult_);
                lastResult_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              fetchFull_ = input.readBool();
              break;
            }
            case 58: {
              org.lumongo.cluster.message.Lumongo.FacetRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = facetRequest_.toBuilder();
              }
              facetRequest_ = input.readMessage(org.lumongo.cluster.message.Lumongo.FacetRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(facetRequest_);
                facetRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 66: {
              org.lumongo.cluster.message.Lumongo.SortRequest.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = sortRequest_.toBuilder();
              }
              sortRequest_ = input.readMessage(org.lumongo.cluster.message.Lumongo.SortRequest.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sortRequest_);
                sortRequest_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 74: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                queryField_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000080;
              }
              queryField_.add(bs);
              break;
            }
            case 82: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                filterQuery_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000100;
              }
              filterQuery_.add(bs);
              break;
            }
            case 90: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                fields_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000200;
              }
              fields_.add(bs);
              break;
            }
            case 96: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.FetchType value = org.lumongo.cluster.message.Lumongo.FetchType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(12, rawValue);
              } else {
                bitField0_ |= 0x00000040;
                resultFetchType_ = value;
              }
              break;
            }
            case 104: {
              bitField0_ |= 0x00000080;
              minimumNumberShouldMatch_ = input.readUInt32();
              break;
            }
            case 112: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.QueryRequest.Operator value = org.lumongo.cluster.message.Lumongo.QueryRequest.Operator.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(14, rawValue);
              } else {
                bitField0_ |= 0x00000100;
                defaultOperator_ = value;
              }
              break;
            }
            case 122: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                documentFields_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00002000;
              }
              documentFields_.add(bs);
              break;
            }
            case 130: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                documentMaskedFields_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00004000;
              }
              documentMaskedFields_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          index_ = index_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          queryField_ = queryField_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          filterQuery_ = filterQuery_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          fields_ = fields_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          documentFields_ = documentFields_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
          documentMaskedFields_ = documentMaskedFields_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_QueryRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_QueryRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.QueryRequest.class, org.lumongo.cluster.message.Lumongo.QueryRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public QueryRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new QueryRequest(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code QueryRequest.Operator}
     */
    public enum Operator
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * AND = 1;
       */
      AND(0, 1),
      /**
       * OR = 2;
       */
      OR(1, 2),
      ;

      /**
       * AND = 1;
       */
      public static final int AND_VALUE = 1;
      /**
       * OR = 2;
       */
      public static final int OR_VALUE = 2;


      public final int getNumber() { return value; }

      public static Operator valueOf(int value) {
        switch (value) {
          case 1: return AND;
          case 2: return OR;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public Operator findValueByNumber(int number) {
                return Operator.valueOf(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.QueryRequest.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int index;
      private final int value;

      private Operator(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:QueryRequest.Operator)
    }

    private int bitField0_;
    public static final int INDEX_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList index_;
    /**
     * repeated string index = 1;
     */
    public com.google.protobuf.ProtocolStringList
        getIndexList() {
      return index_;
    }
    /**
     * repeated string index = 1;
     */
    public int getIndexCount() {
      return index_.size();
    }
    /**
     * repeated string index = 1;
     */
    public java.lang.String getIndex(int index) {
      return index_.get(index);
    }
    /**
     * repeated string index = 1;
     */
    public com.google.protobuf.ByteString
        getIndexBytes(int index) {
      return index_.getByteString(index);
    }

    public static final int QUERY_FIELD_NUMBER = 2;
    private java.lang.Object query_;
    /**
     * optional string query = 2;
     */
    public boolean hasQuery() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional string query = 2;
     */
    public java.lang.String getQuery() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          query_ = s;
        }
        return s;
      }
    }
    /**
     * optional string query = 2;
     */
    public com.google.protobuf.ByteString
        getQueryBytes() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        query_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AMOUNT_FIELD_NUMBER = 3;
    private int amount_;
    /**
     * required uint32 amount = 3;
     */
    public boolean hasAmount() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint32 amount = 3;
     */
    public int getAmount() {
      return amount_;
    }

    public static final int LASTRESULT_FIELD_NUMBER = 4;
    private org.lumongo.cluster.message.Lumongo.LastResult lastResult_;
    /**
     * optional .LastResult lastResult = 4;
     */
    public boolean hasLastResult() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .LastResult lastResult = 4;
     */
    public org.lumongo.cluster.message.Lumongo.LastResult getLastResult() {
      return lastResult_;
    }
    /**
     * optional .LastResult lastResult = 4;
     */
    public org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder() {
      return lastResult_;
    }

    public static final int FETCHFULL_FIELD_NUMBER = 5;
    private boolean fetchFull_;
    /**
     * optional bool fetchFull = 5 [default = false];
     */
    public boolean hasFetchFull() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bool fetchFull = 5 [default = false];
     */
    public boolean getFetchFull() {
      return fetchFull_;
    }

    public static final int FACETREQUEST_FIELD_NUMBER = 7;
    private org.lumongo.cluster.message.Lumongo.FacetRequest facetRequest_;
    /**
     * optional .FacetRequest facetRequest = 7;
     */
    public boolean hasFacetRequest() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional .FacetRequest facetRequest = 7;
     */
    public org.lumongo.cluster.message.Lumongo.FacetRequest getFacetRequest() {
      return facetRequest_;
    }
    /**
     * optional .FacetRequest facetRequest = 7;
     */
    public org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder getFacetRequestOrBuilder() {
      return facetRequest_;
    }

    public static final int SORTREQUEST_FIELD_NUMBER = 8;
    private org.lumongo.cluster.message.Lumongo.SortRequest sortRequest_;
    /**
     * optional .SortRequest sortRequest = 8;
     */
    public boolean hasSortRequest() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional .SortRequest sortRequest = 8;
     */
    public org.lumongo.cluster.message.Lumongo.SortRequest getSortRequest() {
      return sortRequest_;
    }
    /**
     * optional .SortRequest sortRequest = 8;
     */
    public org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder getSortRequestOrBuilder() {
      return sortRequest_;
    }

    public static final int QUERYFIELD_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList queryField_;
    /**
     * repeated string queryField = 9;
     */
    public com.google.protobuf.ProtocolStringList
        getQueryFieldList() {
      return queryField_;
    }
    /**
     * repeated string queryField = 9;
     */
    public int getQueryFieldCount() {
      return queryField_.size();
    }
    /**
     * repeated string queryField = 9;
     */
    public java.lang.String getQueryField(int index) {
      return queryField_.get(index);
    }
    /**
     * repeated string queryField = 9;
     */
    public com.google.protobuf.ByteString
        getQueryFieldBytes(int index) {
      return queryField_.getByteString(index);
    }

    public static final int FILTERQUERY_FIELD_NUMBER = 10;
    private com.google.protobuf.LazyStringList filterQuery_;
    /**
     * repeated string filterQuery = 10;
     */
    public com.google.protobuf.ProtocolStringList
        getFilterQueryList() {
      return filterQuery_;
    }
    /**
     * repeated string filterQuery = 10;
     */
    public int getFilterQueryCount() {
      return filterQuery_.size();
    }
    /**
     * repeated string filterQuery = 10;
     */
    public java.lang.String getFilterQuery(int index) {
      return filterQuery_.get(index);
    }
    /**
     * repeated string filterQuery = 10;
     */
    public com.google.protobuf.ByteString
        getFilterQueryBytes(int index) {
      return filterQuery_.getByteString(index);
    }

    public static final int FIELDS_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList fields_;
    /**
     * repeated string fields = 11;
     */
    public com.google.protobuf.ProtocolStringList
        getFieldsList() {
      return fields_;
    }
    /**
     * repeated string fields = 11;
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * repeated string fields = 11;
     */
    public java.lang.String getFields(int index) {
      return fields_.get(index);
    }
    /**
     * repeated string fields = 11;
     */
    public com.google.protobuf.ByteString
        getFieldsBytes(int index) {
      return fields_.getByteString(index);
    }

    public static final int RESULTFETCHTYPE_FIELD_NUMBER = 12;
    private org.lumongo.cluster.message.Lumongo.FetchType resultFetchType_;
    /**
     * optional .FetchType resultFetchType = 12 [default = NONE];
     */
    public boolean hasResultFetchType() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional .FetchType resultFetchType = 12 [default = NONE];
     */
    public org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType() {
      return resultFetchType_;
    }

    public static final int MINIMUMNUMBERSHOULDMATCH_FIELD_NUMBER = 13;
    private int minimumNumberShouldMatch_;
    /**
     * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
     */
    public boolean hasMinimumNumberShouldMatch() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
     */
    public int getMinimumNumberShouldMatch() {
      return minimumNumberShouldMatch_;
    }

    public static final int DEFAULTOPERATOR_FIELD_NUMBER = 14;
    private org.lumongo.cluster.message.Lumongo.QueryRequest.Operator defaultOperator_;
    /**
     * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
     */
    public boolean hasDefaultOperator() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
     */
    public org.lumongo.cluster.message.Lumongo.QueryRequest.Operator getDefaultOperator() {
      return defaultOperator_;
    }

    public static final int DOCUMENTFIELDS_FIELD_NUMBER = 15;
    private com.google.protobuf.LazyStringList documentFields_;
    /**
     * repeated string documentFields = 15;
     */
    public com.google.protobuf.ProtocolStringList
        getDocumentFieldsList() {
      return documentFields_;
    }
    /**
     * repeated string documentFields = 15;
     */
    public int getDocumentFieldsCount() {
      return documentFields_.size();
    }
    /**
     * repeated string documentFields = 15;
     */
    public java.lang.String getDocumentFields(int index) {
      return documentFields_.get(index);
    }
    /**
     * repeated string documentFields = 15;
     */
    public com.google.protobuf.ByteString
        getDocumentFieldsBytes(int index) {
      return documentFields_.getByteString(index);
    }

    public static final int DOCUMENTMASKEDFIELDS_FIELD_NUMBER = 16;
    private com.google.protobuf.LazyStringList documentMaskedFields_;
    /**
     * repeated string documentMaskedFields = 16;
     */
    public com.google.protobuf.ProtocolStringList
        getDocumentMaskedFieldsList() {
      return documentMaskedFields_;
    }
    /**
     * repeated string documentMaskedFields = 16;
     */
    public int getDocumentMaskedFieldsCount() {
      return documentMaskedFields_.size();
    }
    /**
     * repeated string documentMaskedFields = 16;
     */
    public java.lang.String getDocumentMaskedFields(int index) {
      return documentMaskedFields_.get(index);
    }
    /**
     * repeated string documentMaskedFields = 16;
     */
    public com.google.protobuf.ByteString
        getDocumentMaskedFieldsBytes(int index) {
      return documentMaskedFields_.getByteString(index);
    }

    private void initFields() {
      index_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      query_ = "";
      amount_ = 0;
      lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
      fetchFull_ = false;
      facetRequest_ = org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance();
      sortRequest_ = org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance();
      queryField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      filterQuery_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      fields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.NONE;
      minimumNumberShouldMatch_ = 0;
      defaultOperator_ = org.lumongo.cluster.message.Lumongo.QueryRequest.Operator.OR;
      documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasAmount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLastResult()) {
        if (!getLastResult().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFacetRequest()) {
        if (!getFacetRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSortRequest()) {
        if (!getSortRequest().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < index_.size(); i++) {
        output.writeBytes(1, index_.getByteString(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(2, getQueryBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(3, amount_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, lastResult_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(5, fetchFull_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(7, facetRequest_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(8, sortRequest_);
      }
      for (int i = 0; i < queryField_.size(); i++) {
        output.writeBytes(9, queryField_.getByteString(i));
      }
      for (int i = 0; i < filterQuery_.size(); i++) {
        output.writeBytes(10, filterQuery_.getByteString(i));
      }
      for (int i = 0; i < fields_.size(); i++) {
        output.writeBytes(11, fields_.getByteString(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeEnum(12, resultFetchType_.getNumber());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(13, minimumNumberShouldMatch_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeEnum(14, defaultOperator_.getNumber());
      }
      for (int i = 0; i < documentFields_.size(); i++) {
        output.writeBytes(15, documentFields_.getByteString(i));
      }
      for (int i = 0; i < documentMaskedFields_.size(); i++) {
        output.writeBytes(16, documentMaskedFields_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < index_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(index_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getIndexList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getQueryBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, amount_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, lastResult_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, fetchFull_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, facetRequest_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, sortRequest_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < queryField_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(queryField_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getQueryFieldList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < filterQuery_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(filterQuery_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getFilterQueryList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < fields_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(fields_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getFieldsList().size();
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(12, resultFetchType_.getNumber());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(13, minimumNumberShouldMatch_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, defaultOperator_.getNumber());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < documentFields_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(documentFields_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getDocumentFieldsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < documentMaskedFields_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(documentMaskedFields_.getByteString(i));
        }
        size += dataSize;
        size += 2 * getDocumentMaskedFieldsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.QueryRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code QueryRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:QueryRequest)
        org.lumongo.cluster.message.Lumongo.QueryRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.QueryRequest.class, org.lumongo.cluster.message.Lumongo.QueryRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.QueryRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLastResultFieldBuilder();
          getFacetRequestFieldBuilder();
          getSortRequestFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        index_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        query_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        amount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (lastResultBuilder_ == null) {
          lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
        } else {
          lastResultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        fetchFull_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        if (facetRequestBuilder_ == null) {
          facetRequest_ = org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance();
        } else {
          facetRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (sortRequestBuilder_ == null) {
          sortRequest_ = org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance();
        } else {
          sortRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        queryField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        filterQuery_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        fields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.NONE;
        bitField0_ = (bitField0_ & ~0x00000400);
        minimumNumberShouldMatch_ = 0;
        bitField0_ = (bitField0_ & ~0x00000800);
        defaultOperator_ = org.lumongo.cluster.message.Lumongo.QueryRequest.Operator.OR;
        bitField0_ = (bitField0_ & ~0x00001000);
        documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00004000);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.QueryRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.QueryRequest build() {
        org.lumongo.cluster.message.Lumongo.QueryRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.QueryRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.QueryRequest result = new org.lumongo.cluster.message.Lumongo.QueryRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          index_ = index_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.index_ = index_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.query_ = query_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.amount_ = amount_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        if (lastResultBuilder_ == null) {
          result.lastResult_ = lastResult_;
        } else {
          result.lastResult_ = lastResultBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.fetchFull_ = fetchFull_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        if (facetRequestBuilder_ == null) {
          result.facetRequest_ = facetRequest_;
        } else {
          result.facetRequest_ = facetRequestBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        if (sortRequestBuilder_ == null) {
          result.sortRequest_ = sortRequest_;
        } else {
          result.sortRequest_ = sortRequestBuilder_.build();
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          queryField_ = queryField_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.queryField_ = queryField_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          filterQuery_ = filterQuery_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.filterQuery_ = filterQuery_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          fields_ = fields_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.fields_ = fields_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000040;
        }
        result.resultFetchType_ = resultFetchType_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000080;
        }
        result.minimumNumberShouldMatch_ = minimumNumberShouldMatch_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000100;
        }
        result.defaultOperator_ = defaultOperator_;
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          documentFields_ = documentFields_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.documentFields_ = documentFields_;
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          documentMaskedFields_ = documentMaskedFields_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.documentMaskedFields_ = documentMaskedFields_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.QueryRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.QueryRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.QueryRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance()) return this;
        if (!other.index_.isEmpty()) {
          if (index_.isEmpty()) {
            index_ = other.index_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIndexIsMutable();
            index_.addAll(other.index_);
          }
          onChanged();
        }
        if (other.hasQuery()) {
          bitField0_ |= 0x00000002;
          query_ = other.query_;
          onChanged();
        }
        if (other.hasAmount()) {
          setAmount(other.getAmount());
        }
        if (other.hasLastResult()) {
          mergeLastResult(other.getLastResult());
        }
        if (other.hasFetchFull()) {
          setFetchFull(other.getFetchFull());
        }
        if (other.hasFacetRequest()) {
          mergeFacetRequest(other.getFacetRequest());
        }
        if (other.hasSortRequest()) {
          mergeSortRequest(other.getSortRequest());
        }
        if (!other.queryField_.isEmpty()) {
          if (queryField_.isEmpty()) {
            queryField_ = other.queryField_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureQueryFieldIsMutable();
            queryField_.addAll(other.queryField_);
          }
          onChanged();
        }
        if (!other.filterQuery_.isEmpty()) {
          if (filterQuery_.isEmpty()) {
            filterQuery_ = other.filterQuery_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureFilterQueryIsMutable();
            filterQuery_.addAll(other.filterQuery_);
          }
          onChanged();
        }
        if (!other.fields_.isEmpty()) {
          if (fields_.isEmpty()) {
            fields_ = other.fields_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureFieldsIsMutable();
            fields_.addAll(other.fields_);
          }
          onChanged();
        }
        if (other.hasResultFetchType()) {
          setResultFetchType(other.getResultFetchType());
        }
        if (other.hasMinimumNumberShouldMatch()) {
          setMinimumNumberShouldMatch(other.getMinimumNumberShouldMatch());
        }
        if (other.hasDefaultOperator()) {
          setDefaultOperator(other.getDefaultOperator());
        }
        if (!other.documentFields_.isEmpty()) {
          if (documentFields_.isEmpty()) {
            documentFields_ = other.documentFields_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureDocumentFieldsIsMutable();
            documentFields_.addAll(other.documentFields_);
          }
          onChanged();
        }
        if (!other.documentMaskedFields_.isEmpty()) {
          if (documentMaskedFields_.isEmpty()) {
            documentMaskedFields_ = other.documentMaskedFields_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureDocumentMaskedFieldsIsMutable();
            documentMaskedFields_.addAll(other.documentMaskedFields_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAmount()) {
          
          return false;
        }
        if (hasLastResult()) {
          if (!getLastResult().isInitialized()) {
            
            return false;
          }
        }
        if (hasFacetRequest()) {
          if (!getFacetRequest().isInitialized()) {
            
            return false;
          }
        }
        if (hasSortRequest()) {
          if (!getSortRequest().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.QueryRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.QueryRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList index_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIndexIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          index_ = new com.google.protobuf.LazyStringArrayList(index_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string index = 1;
       */
      public com.google.protobuf.ProtocolStringList
          getIndexList() {
        return index_.getUnmodifiableView();
      }
      /**
       * repeated string index = 1;
       */
      public int getIndexCount() {
        return index_.size();
      }
      /**
       * repeated string index = 1;
       */
      public java.lang.String getIndex(int index) {
        return index_.get(index);
      }
      /**
       * repeated string index = 1;
       */
      public com.google.protobuf.ByteString
          getIndexBytes(int index) {
        return index_.getByteString(index);
      }
      /**
       * repeated string index = 1;
       */
      public Builder setIndex(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexIsMutable();
        index_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string index = 1;
       */
      public Builder addIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexIsMutable();
        index_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string index = 1;
       */
      public Builder addAllIndex(
          java.lang.Iterable values) {
        ensureIndexIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, index_);
        onChanged();
        return this;
      }
      /**
       * repeated string index = 1;
       */
      public Builder clearIndex() {
        index_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string index = 1;
       */
      public Builder addIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIndexIsMutable();
        index_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object query_ = "";
      /**
       * optional string query = 2;
       */
      public boolean hasQuery() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string query = 2;
       */
      public java.lang.String getQuery() {
        java.lang.Object ref = query_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            query_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string query = 2;
       */
      public com.google.protobuf.ByteString
          getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string query = 2;
       */
      public Builder setQuery(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        query_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string query = 2;
       */
      public Builder clearQuery() {
        bitField0_ = (bitField0_ & ~0x00000002);
        query_ = getDefaultInstance().getQuery();
        onChanged();
        return this;
      }
      /**
       * optional string query = 2;
       */
      public Builder setQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        query_ = value;
        onChanged();
        return this;
      }

      private int amount_ ;
      /**
       * required uint32 amount = 3;
       */
      public boolean hasAmount() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required uint32 amount = 3;
       */
      public int getAmount() {
        return amount_;
      }
      /**
       * required uint32 amount = 3;
       */
      public Builder setAmount(int value) {
        bitField0_ |= 0x00000004;
        amount_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint32 amount = 3;
       */
      public Builder clearAmount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        amount_ = 0;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.LastResult lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder> lastResultBuilder_;
      /**
       * optional .LastResult lastResult = 4;
       */
      public boolean hasLastResult() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.LastResult getLastResult() {
        if (lastResultBuilder_ == null) {
          return lastResult_;
        } else {
          return lastResultBuilder_.getMessage();
        }
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public Builder setLastResult(org.lumongo.cluster.message.Lumongo.LastResult value) {
        if (lastResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastResult_ = value;
          onChanged();
        } else {
          lastResultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public Builder setLastResult(
          org.lumongo.cluster.message.Lumongo.LastResult.Builder builderForValue) {
        if (lastResultBuilder_ == null) {
          lastResult_ = builderForValue.build();
          onChanged();
        } else {
          lastResultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public Builder mergeLastResult(org.lumongo.cluster.message.Lumongo.LastResult value) {
        if (lastResultBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              lastResult_ != org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance()) {
            lastResult_ =
              org.lumongo.cluster.message.Lumongo.LastResult.newBuilder(lastResult_).mergeFrom(value).buildPartial();
          } else {
            lastResult_ = value;
          }
          onChanged();
        } else {
          lastResultBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public Builder clearLastResult() {
        if (lastResultBuilder_ == null) {
          lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
          onChanged();
        } else {
          lastResultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.LastResult.Builder getLastResultBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLastResultFieldBuilder().getBuilder();
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      public org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder() {
        if (lastResultBuilder_ != null) {
          return lastResultBuilder_.getMessageOrBuilder();
        } else {
          return lastResult_;
        }
      }
      /**
       * optional .LastResult lastResult = 4;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder> 
          getLastResultFieldBuilder() {
        if (lastResultBuilder_ == null) {
          lastResultBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder>(
                  getLastResult(),
                  getParentForChildren(),
                  isClean());
          lastResult_ = null;
        }
        return lastResultBuilder_;
      }

      private boolean fetchFull_ ;
      /**
       * optional bool fetchFull = 5 [default = false];
       */
      public boolean hasFetchFull() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bool fetchFull = 5 [default = false];
       */
      public boolean getFetchFull() {
        return fetchFull_;
      }
      /**
       * optional bool fetchFull = 5 [default = false];
       */
      public Builder setFetchFull(boolean value) {
        bitField0_ |= 0x00000010;
        fetchFull_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool fetchFull = 5 [default = false];
       */
      public Builder clearFetchFull() {
        bitField0_ = (bitField0_ & ~0x00000010);
        fetchFull_ = false;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FacetRequest facetRequest_ = org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetRequest, org.lumongo.cluster.message.Lumongo.FacetRequest.Builder, org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder> facetRequestBuilder_;
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public boolean hasFacetRequest() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public org.lumongo.cluster.message.Lumongo.FacetRequest getFacetRequest() {
        if (facetRequestBuilder_ == null) {
          return facetRequest_;
        } else {
          return facetRequestBuilder_.getMessage();
        }
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public Builder setFacetRequest(org.lumongo.cluster.message.Lumongo.FacetRequest value) {
        if (facetRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          facetRequest_ = value;
          onChanged();
        } else {
          facetRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public Builder setFacetRequest(
          org.lumongo.cluster.message.Lumongo.FacetRequest.Builder builderForValue) {
        if (facetRequestBuilder_ == null) {
          facetRequest_ = builderForValue.build();
          onChanged();
        } else {
          facetRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public Builder mergeFacetRequest(org.lumongo.cluster.message.Lumongo.FacetRequest value) {
        if (facetRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              facetRequest_ != org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance()) {
            facetRequest_ =
              org.lumongo.cluster.message.Lumongo.FacetRequest.newBuilder(facetRequest_).mergeFrom(value).buildPartial();
          } else {
            facetRequest_ = value;
          }
          onChanged();
        } else {
          facetRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public Builder clearFacetRequest() {
        if (facetRequestBuilder_ == null) {
          facetRequest_ = org.lumongo.cluster.message.Lumongo.FacetRequest.getDefaultInstance();
          onChanged();
        } else {
          facetRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public org.lumongo.cluster.message.Lumongo.FacetRequest.Builder getFacetRequestBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getFacetRequestFieldBuilder().getBuilder();
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      public org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder getFacetRequestOrBuilder() {
        if (facetRequestBuilder_ != null) {
          return facetRequestBuilder_.getMessageOrBuilder();
        } else {
          return facetRequest_;
        }
      }
      /**
       * optional .FacetRequest facetRequest = 7;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetRequest, org.lumongo.cluster.message.Lumongo.FacetRequest.Builder, org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder> 
          getFacetRequestFieldBuilder() {
        if (facetRequestBuilder_ == null) {
          facetRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FacetRequest, org.lumongo.cluster.message.Lumongo.FacetRequest.Builder, org.lumongo.cluster.message.Lumongo.FacetRequestOrBuilder>(
                  getFacetRequest(),
                  getParentForChildren(),
                  isClean());
          facetRequest_ = null;
        }
        return facetRequestBuilder_;
      }

      private org.lumongo.cluster.message.Lumongo.SortRequest sortRequest_ = org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SortRequest, org.lumongo.cluster.message.Lumongo.SortRequest.Builder, org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder> sortRequestBuilder_;
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public boolean hasSortRequest() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public org.lumongo.cluster.message.Lumongo.SortRequest getSortRequest() {
        if (sortRequestBuilder_ == null) {
          return sortRequest_;
        } else {
          return sortRequestBuilder_.getMessage();
        }
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public Builder setSortRequest(org.lumongo.cluster.message.Lumongo.SortRequest value) {
        if (sortRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sortRequest_ = value;
          onChanged();
        } else {
          sortRequestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public Builder setSortRequest(
          org.lumongo.cluster.message.Lumongo.SortRequest.Builder builderForValue) {
        if (sortRequestBuilder_ == null) {
          sortRequest_ = builderForValue.build();
          onChanged();
        } else {
          sortRequestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public Builder mergeSortRequest(org.lumongo.cluster.message.Lumongo.SortRequest value) {
        if (sortRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              sortRequest_ != org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance()) {
            sortRequest_ =
              org.lumongo.cluster.message.Lumongo.SortRequest.newBuilder(sortRequest_).mergeFrom(value).buildPartial();
          } else {
            sortRequest_ = value;
          }
          onChanged();
        } else {
          sortRequestBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public Builder clearSortRequest() {
        if (sortRequestBuilder_ == null) {
          sortRequest_ = org.lumongo.cluster.message.Lumongo.SortRequest.getDefaultInstance();
          onChanged();
        } else {
          sortRequestBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public org.lumongo.cluster.message.Lumongo.SortRequest.Builder getSortRequestBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSortRequestFieldBuilder().getBuilder();
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      public org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder getSortRequestOrBuilder() {
        if (sortRequestBuilder_ != null) {
          return sortRequestBuilder_.getMessageOrBuilder();
        } else {
          return sortRequest_;
        }
      }
      /**
       * optional .SortRequest sortRequest = 8;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.SortRequest, org.lumongo.cluster.message.Lumongo.SortRequest.Builder, org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder> 
          getSortRequestFieldBuilder() {
        if (sortRequestBuilder_ == null) {
          sortRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.SortRequest, org.lumongo.cluster.message.Lumongo.SortRequest.Builder, org.lumongo.cluster.message.Lumongo.SortRequestOrBuilder>(
                  getSortRequest(),
                  getParentForChildren(),
                  isClean());
          sortRequest_ = null;
        }
        return sortRequestBuilder_;
      }

      private com.google.protobuf.LazyStringList queryField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureQueryFieldIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          queryField_ = new com.google.protobuf.LazyStringArrayList(queryField_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * repeated string queryField = 9;
       */
      public com.google.protobuf.ProtocolStringList
          getQueryFieldList() {
        return queryField_.getUnmodifiableView();
      }
      /**
       * repeated string queryField = 9;
       */
      public int getQueryFieldCount() {
        return queryField_.size();
      }
      /**
       * repeated string queryField = 9;
       */
      public java.lang.String getQueryField(int index) {
        return queryField_.get(index);
      }
      /**
       * repeated string queryField = 9;
       */
      public com.google.protobuf.ByteString
          getQueryFieldBytes(int index) {
        return queryField_.getByteString(index);
      }
      /**
       * repeated string queryField = 9;
       */
      public Builder setQueryField(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureQueryFieldIsMutable();
        queryField_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string queryField = 9;
       */
      public Builder addQueryField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureQueryFieldIsMutable();
        queryField_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string queryField = 9;
       */
      public Builder addAllQueryField(
          java.lang.Iterable values) {
        ensureQueryFieldIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, queryField_);
        onChanged();
        return this;
      }
      /**
       * repeated string queryField = 9;
       */
      public Builder clearQueryField() {
        queryField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * repeated string queryField = 9;
       */
      public Builder addQueryFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureQueryFieldIsMutable();
        queryField_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList filterQuery_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFilterQueryIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          filterQuery_ = new com.google.protobuf.LazyStringArrayList(filterQuery_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * repeated string filterQuery = 10;
       */
      public com.google.protobuf.ProtocolStringList
          getFilterQueryList() {
        return filterQuery_.getUnmodifiableView();
      }
      /**
       * repeated string filterQuery = 10;
       */
      public int getFilterQueryCount() {
        return filterQuery_.size();
      }
      /**
       * repeated string filterQuery = 10;
       */
      public java.lang.String getFilterQuery(int index) {
        return filterQuery_.get(index);
      }
      /**
       * repeated string filterQuery = 10;
       */
      public com.google.protobuf.ByteString
          getFilterQueryBytes(int index) {
        return filterQuery_.getByteString(index);
      }
      /**
       * repeated string filterQuery = 10;
       */
      public Builder setFilterQuery(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFilterQueryIsMutable();
        filterQuery_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string filterQuery = 10;
       */
      public Builder addFilterQuery(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFilterQueryIsMutable();
        filterQuery_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string filterQuery = 10;
       */
      public Builder addAllFilterQuery(
          java.lang.Iterable values) {
        ensureFilterQueryIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, filterQuery_);
        onChanged();
        return this;
      }
      /**
       * repeated string filterQuery = 10;
       */
      public Builder clearFilterQuery() {
        filterQuery_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * repeated string filterQuery = 10;
       */
      public Builder addFilterQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFilterQueryIsMutable();
        filterQuery_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList fields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          fields_ = new com.google.protobuf.LazyStringArrayList(fields_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * repeated string fields = 11;
       */
      public com.google.protobuf.ProtocolStringList
          getFieldsList() {
        return fields_.getUnmodifiableView();
      }
      /**
       * repeated string fields = 11;
       */
      public int getFieldsCount() {
        return fields_.size();
      }
      /**
       * repeated string fields = 11;
       */
      public java.lang.String getFields(int index) {
        return fields_.get(index);
      }
      /**
       * repeated string fields = 11;
       */
      public com.google.protobuf.ByteString
          getFieldsBytes(int index) {
        return fields_.getByteString(index);
      }
      /**
       * repeated string fields = 11;
       */
      public Builder setFields(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldsIsMutable();
        fields_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string fields = 11;
       */
      public Builder addFields(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldsIsMutable();
        fields_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string fields = 11;
       */
      public Builder addAllFields(
          java.lang.Iterable values) {
        ensureFieldsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fields_);
        onChanged();
        return this;
      }
      /**
       * repeated string fields = 11;
       */
      public Builder clearFields() {
        fields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * repeated string fields = 11;
       */
      public Builder addFieldsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFieldsIsMutable();
        fields_.add(value);
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FetchType resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.NONE;
      /**
       * optional .FetchType resultFetchType = 12 [default = NONE];
       */
      public boolean hasResultFetchType() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional .FetchType resultFetchType = 12 [default = NONE];
       */
      public org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType() {
        return resultFetchType_;
      }
      /**
       * optional .FetchType resultFetchType = 12 [default = NONE];
       */
      public Builder setResultFetchType(org.lumongo.cluster.message.Lumongo.FetchType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000400;
        resultFetchType_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .FetchType resultFetchType = 12 [default = NONE];
       */
      public Builder clearResultFetchType() {
        bitField0_ = (bitField0_ & ~0x00000400);
        resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.NONE;
        onChanged();
        return this;
      }

      private int minimumNumberShouldMatch_ ;
      /**
       * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
       */
      public boolean hasMinimumNumberShouldMatch() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
       */
      public int getMinimumNumberShouldMatch() {
        return minimumNumberShouldMatch_;
      }
      /**
       * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
       */
      public Builder setMinimumNumberShouldMatch(int value) {
        bitField0_ |= 0x00000800;
        minimumNumberShouldMatch_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 minimumNumberShouldMatch = 13 [default = 0];
       */
      public Builder clearMinimumNumberShouldMatch() {
        bitField0_ = (bitField0_ & ~0x00000800);
        minimumNumberShouldMatch_ = 0;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.QueryRequest.Operator defaultOperator_ = org.lumongo.cluster.message.Lumongo.QueryRequest.Operator.OR;
      /**
       * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
       */
      public boolean hasDefaultOperator() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
       */
      public org.lumongo.cluster.message.Lumongo.QueryRequest.Operator getDefaultOperator() {
        return defaultOperator_;
      }
      /**
       * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
       */
      public Builder setDefaultOperator(org.lumongo.cluster.message.Lumongo.QueryRequest.Operator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00001000;
        defaultOperator_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .QueryRequest.Operator defaultOperator = 14 [default = OR];
       */
      public Builder clearDefaultOperator() {
        bitField0_ = (bitField0_ & ~0x00001000);
        defaultOperator_ = org.lumongo.cluster.message.Lumongo.QueryRequest.Operator.OR;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDocumentFieldsIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          documentFields_ = new com.google.protobuf.LazyStringArrayList(documentFields_);
          bitField0_ |= 0x00002000;
         }
      }
      /**
       * repeated string documentFields = 15;
       */
      public com.google.protobuf.ProtocolStringList
          getDocumentFieldsList() {
        return documentFields_.getUnmodifiableView();
      }
      /**
       * repeated string documentFields = 15;
       */
      public int getDocumentFieldsCount() {
        return documentFields_.size();
      }
      /**
       * repeated string documentFields = 15;
       */
      public java.lang.String getDocumentFields(int index) {
        return documentFields_.get(index);
      }
      /**
       * repeated string documentFields = 15;
       */
      public com.google.protobuf.ByteString
          getDocumentFieldsBytes(int index) {
        return documentFields_.getByteString(index);
      }
      /**
       * repeated string documentFields = 15;
       */
      public Builder setDocumentFields(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 15;
       */
      public Builder addDocumentFields(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 15;
       */
      public Builder addAllDocumentFields(
          java.lang.Iterable values) {
        ensureDocumentFieldsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, documentFields_);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 15;
       */
      public Builder clearDocumentFields() {
        documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 15;
       */
      public Builder addDocumentFieldsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDocumentMaskedFieldsIsMutable() {
        if (!((bitField0_ & 0x00004000) == 0x00004000)) {
          documentMaskedFields_ = new com.google.protobuf.LazyStringArrayList(documentMaskedFields_);
          bitField0_ |= 0x00004000;
         }
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public com.google.protobuf.ProtocolStringList
          getDocumentMaskedFieldsList() {
        return documentMaskedFields_.getUnmodifiableView();
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public int getDocumentMaskedFieldsCount() {
        return documentMaskedFields_.size();
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public java.lang.String getDocumentMaskedFields(int index) {
        return documentMaskedFields_.get(index);
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public com.google.protobuf.ByteString
          getDocumentMaskedFieldsBytes(int index) {
        return documentMaskedFields_.getByteString(index);
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public Builder setDocumentMaskedFields(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public Builder addDocumentMaskedFields(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public Builder addAllDocumentMaskedFields(
          java.lang.Iterable values) {
        ensureDocumentMaskedFieldsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, documentMaskedFields_);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public Builder clearDocumentMaskedFields() {
        documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 16;
       */
      public Builder addDocumentMaskedFieldsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:QueryRequest)
    }

    static {
      defaultInstance = new QueryRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:QueryRequest)
  }

  public interface QueryResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:QueryResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required uint64 totalHits = 1;
     */
    boolean hasTotalHits();
    /**
     * required uint64 totalHits = 1;
     */
    long getTotalHits();

    /**
     * repeated .ScoredResult results = 2;
     */
    java.util.List 
        getResultsList();
    /**
     * repeated .ScoredResult results = 2;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResult getResults(int index);
    /**
     * repeated .ScoredResult results = 2;
     */
    int getResultsCount();
    /**
     * repeated .ScoredResult results = 2;
     */
    java.util.List 
        getResultsOrBuilderList();
    /**
     * repeated .ScoredResult results = 2;
     */
    org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getResultsOrBuilder(
        int index);

    /**
     * required .LastResult lastResult = 3;
     */
    boolean hasLastResult();
    /**
     * required .LastResult lastResult = 3;
     */
    org.lumongo.cluster.message.Lumongo.LastResult getLastResult();
    /**
     * required .LastResult lastResult = 3;
     */
    org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder();

    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    java.util.List 
        getFacetGroupList();
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index);
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    int getFacetGroupCount();
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    java.util.List 
        getFacetGroupOrBuilderList();
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code QueryResponse}
   */
  public static final class QueryResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:QueryResponse)
      QueryResponseOrBuilder {
    // Use QueryResponse.newBuilder() to construct.
    private QueryResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private QueryResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final QueryResponse defaultInstance;
    public static QueryResponse getDefaultInstance() {
      return defaultInstance;
    }

    public QueryResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private QueryResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              totalHits_ = input.readUInt64();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                results_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              results_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.ScoredResult.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              org.lumongo.cluster.message.Lumongo.LastResult.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = lastResult_.toBuilder();
              }
              lastResult_ = input.readMessage(org.lumongo.cluster.message.Lumongo.LastResult.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(lastResult_);
                lastResult_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                facetGroup_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              facetGroup_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FacetGroup.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          results_ = java.util.Collections.unmodifiableList(results_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          facetGroup_ = java.util.Collections.unmodifiableList(facetGroup_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_QueryResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_QueryResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.QueryResponse.class, org.lumongo.cluster.message.Lumongo.QueryResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public QueryResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new QueryResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TOTALHITS_FIELD_NUMBER = 1;
    private long totalHits_;
    /**
     * required uint64 totalHits = 1;
     */
    public boolean hasTotalHits() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required uint64 totalHits = 1;
     */
    public long getTotalHits() {
      return totalHits_;
    }

    public static final int RESULTS_FIELD_NUMBER = 2;
    private java.util.List results_;
    /**
     * repeated .ScoredResult results = 2;
     */
    public java.util.List getResultsList() {
      return results_;
    }
    /**
     * repeated .ScoredResult results = 2;
     */
    public java.util.List 
        getResultsOrBuilderList() {
      return results_;
    }
    /**
     * repeated .ScoredResult results = 2;
     */
    public int getResultsCount() {
      return results_.size();
    }
    /**
     * repeated .ScoredResult results = 2;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResult getResults(int index) {
      return results_.get(index);
    }
    /**
     * repeated .ScoredResult results = 2;
     */
    public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getResultsOrBuilder(
        int index) {
      return results_.get(index);
    }

    public static final int LASTRESULT_FIELD_NUMBER = 3;
    private org.lumongo.cluster.message.Lumongo.LastResult lastResult_;
    /**
     * required .LastResult lastResult = 3;
     */
    public boolean hasLastResult() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required .LastResult lastResult = 3;
     */
    public org.lumongo.cluster.message.Lumongo.LastResult getLastResult() {
      return lastResult_;
    }
    /**
     * required .LastResult lastResult = 3;
     */
    public org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder() {
      return lastResult_;
    }

    public static final int FACETGROUP_FIELD_NUMBER = 4;
    private java.util.List facetGroup_;
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    public java.util.List getFacetGroupList() {
      return facetGroup_;
    }
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    public java.util.List 
        getFacetGroupOrBuilderList() {
      return facetGroup_;
    }
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    public int getFacetGroupCount() {
      return facetGroup_.size();
    }
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    public org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index) {
      return facetGroup_.get(index);
    }
    /**
     * repeated .FacetGroup facetGroup = 4;
     */
    public org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
        int index) {
      return facetGroup_.get(index);
    }

    private void initFields() {
      totalHits_ = 0L;
      results_ = java.util.Collections.emptyList();
      lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
      facetGroup_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTotalHits()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLastResult()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getResultsCount(); i++) {
        if (!getResults(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getLastResult().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFacetGroupCount(); i++) {
        if (!getFacetGroup(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, totalHits_);
      }
      for (int i = 0; i < results_.size(); i++) {
        output.writeMessage(2, results_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, lastResult_);
      }
      for (int i = 0; i < facetGroup_.size(); i++) {
        output.writeMessage(4, facetGroup_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, totalHits_);
      }
      for (int i = 0; i < results_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, results_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, lastResult_);
      }
      for (int i = 0; i < facetGroup_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, facetGroup_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.QueryResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.QueryResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code QueryResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:QueryResponse)
        org.lumongo.cluster.message.Lumongo.QueryResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.QueryResponse.class, org.lumongo.cluster.message.Lumongo.QueryResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.QueryResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getResultsFieldBuilder();
          getLastResultFieldBuilder();
          getFacetGroupFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        totalHits_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          resultsBuilder_.clear();
        }
        if (lastResultBuilder_ == null) {
          lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
        } else {
          lastResultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (facetGroupBuilder_ == null) {
          facetGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          facetGroupBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_QueryResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.QueryResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.QueryResponse build() {
        org.lumongo.cluster.message.Lumongo.QueryResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.QueryResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.QueryResponse result = new org.lumongo.cluster.message.Lumongo.QueryResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.totalHits_ = totalHits_;
        if (resultsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            results_ = java.util.Collections.unmodifiableList(results_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.results_ = results_;
        } else {
          result.results_ = resultsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (lastResultBuilder_ == null) {
          result.lastResult_ = lastResult_;
        } else {
          result.lastResult_ = lastResultBuilder_.build();
        }
        if (facetGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            facetGroup_ = java.util.Collections.unmodifiableList(facetGroup_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.facetGroup_ = facetGroup_;
        } else {
          result.facetGroup_ = facetGroupBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.QueryResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.QueryResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.QueryResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance()) return this;
        if (other.hasTotalHits()) {
          setTotalHits(other.getTotalHits());
        }
        if (resultsBuilder_ == null) {
          if (!other.results_.isEmpty()) {
            if (results_.isEmpty()) {
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureResultsIsMutable();
              results_.addAll(other.results_);
            }
            onChanged();
          }
        } else {
          if (!other.results_.isEmpty()) {
            if (resultsBuilder_.isEmpty()) {
              resultsBuilder_.dispose();
              resultsBuilder_ = null;
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000002);
              resultsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResultsFieldBuilder() : null;
            } else {
              resultsBuilder_.addAllMessages(other.results_);
            }
          }
        }
        if (other.hasLastResult()) {
          mergeLastResult(other.getLastResult());
        }
        if (facetGroupBuilder_ == null) {
          if (!other.facetGroup_.isEmpty()) {
            if (facetGroup_.isEmpty()) {
              facetGroup_ = other.facetGroup_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureFacetGroupIsMutable();
              facetGroup_.addAll(other.facetGroup_);
            }
            onChanged();
          }
        } else {
          if (!other.facetGroup_.isEmpty()) {
            if (facetGroupBuilder_.isEmpty()) {
              facetGroupBuilder_.dispose();
              facetGroupBuilder_ = null;
              facetGroup_ = other.facetGroup_;
              bitField0_ = (bitField0_ & ~0x00000008);
              facetGroupBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFacetGroupFieldBuilder() : null;
            } else {
              facetGroupBuilder_.addAllMessages(other.facetGroup_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTotalHits()) {
          
          return false;
        }
        if (!hasLastResult()) {
          
          return false;
        }
        for (int i = 0; i < getResultsCount(); i++) {
          if (!getResults(i).isInitialized()) {
            
            return false;
          }
        }
        if (!getLastResult().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getFacetGroupCount(); i++) {
          if (!getFacetGroup(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.QueryResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.QueryResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long totalHits_ ;
      /**
       * required uint64 totalHits = 1;
       */
      public boolean hasTotalHits() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required uint64 totalHits = 1;
       */
      public long getTotalHits() {
        return totalHits_;
      }
      /**
       * required uint64 totalHits = 1;
       */
      public Builder setTotalHits(long value) {
        bitField0_ |= 0x00000001;
        totalHits_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint64 totalHits = 1;
       */
      public Builder clearTotalHits() {
        bitField0_ = (bitField0_ & ~0x00000001);
        totalHits_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List results_ =
        java.util.Collections.emptyList();
      private void ensureResultsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          results_ = new java.util.ArrayList(results_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> resultsBuilder_;

      /**
       * repeated .ScoredResult results = 2;
       */
      public java.util.List getResultsList() {
        if (resultsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(results_);
        } else {
          return resultsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public int getResultsCount() {
        if (resultsBuilder_ == null) {
          return results_.size();
        } else {
          return resultsBuilder_.getCount();
        }
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult getResults(int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);
        } else {
          return resultsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder setResults(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.set(index, value);
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder setResults(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder addResults(org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder addResults(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(index, value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder addResults(
          org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder addResults(
          int index, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder addAllResults(
          java.lang.Iterable values) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, results_);
          onChanged();
        } else {
          resultsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder clearResults() {
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          resultsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public Builder removeResults(int index) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.remove(index);
          onChanged();
        } else {
          resultsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder getResultsBuilder(
          int index) {
        return getResultsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder getResultsOrBuilder(
          int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);  } else {
          return resultsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public java.util.List 
           getResultsOrBuilderList() {
        if (resultsBuilder_ != null) {
          return resultsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(results_);
        }
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addResultsBuilder() {
        return getResultsFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public org.lumongo.cluster.message.Lumongo.ScoredResult.Builder addResultsBuilder(
          int index) {
        return getResultsFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.ScoredResult.getDefaultInstance());
      }
      /**
       * repeated .ScoredResult results = 2;
       */
      public java.util.List 
           getResultsBuilderList() {
        return getResultsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder> 
          getResultsFieldBuilder() {
        if (resultsBuilder_ == null) {
          resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ScoredResult, org.lumongo.cluster.message.Lumongo.ScoredResult.Builder, org.lumongo.cluster.message.Lumongo.ScoredResultOrBuilder>(
                  results_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          results_ = null;
        }
        return resultsBuilder_;
      }

      private org.lumongo.cluster.message.Lumongo.LastResult lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder> lastResultBuilder_;
      /**
       * required .LastResult lastResult = 3;
       */
      public boolean hasLastResult() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public org.lumongo.cluster.message.Lumongo.LastResult getLastResult() {
        if (lastResultBuilder_ == null) {
          return lastResult_;
        } else {
          return lastResultBuilder_.getMessage();
        }
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public Builder setLastResult(org.lumongo.cluster.message.Lumongo.LastResult value) {
        if (lastResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastResult_ = value;
          onChanged();
        } else {
          lastResultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public Builder setLastResult(
          org.lumongo.cluster.message.Lumongo.LastResult.Builder builderForValue) {
        if (lastResultBuilder_ == null) {
          lastResult_ = builderForValue.build();
          onChanged();
        } else {
          lastResultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public Builder mergeLastResult(org.lumongo.cluster.message.Lumongo.LastResult value) {
        if (lastResultBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              lastResult_ != org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance()) {
            lastResult_ =
              org.lumongo.cluster.message.Lumongo.LastResult.newBuilder(lastResult_).mergeFrom(value).buildPartial();
          } else {
            lastResult_ = value;
          }
          onChanged();
        } else {
          lastResultBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public Builder clearLastResult() {
        if (lastResultBuilder_ == null) {
          lastResult_ = org.lumongo.cluster.message.Lumongo.LastResult.getDefaultInstance();
          onChanged();
        } else {
          lastResultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public org.lumongo.cluster.message.Lumongo.LastResult.Builder getLastResultBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastResultFieldBuilder().getBuilder();
      }
      /**
       * required .LastResult lastResult = 3;
       */
      public org.lumongo.cluster.message.Lumongo.LastResultOrBuilder getLastResultOrBuilder() {
        if (lastResultBuilder_ != null) {
          return lastResultBuilder_.getMessageOrBuilder();
        } else {
          return lastResult_;
        }
      }
      /**
       * required .LastResult lastResult = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder> 
          getLastResultFieldBuilder() {
        if (lastResultBuilder_ == null) {
          lastResultBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.LastResult, org.lumongo.cluster.message.Lumongo.LastResult.Builder, org.lumongo.cluster.message.Lumongo.LastResultOrBuilder>(
                  getLastResult(),
                  getParentForChildren(),
                  isClean());
          lastResult_ = null;
        }
        return lastResultBuilder_;
      }

      private java.util.List facetGroup_ =
        java.util.Collections.emptyList();
      private void ensureFacetGroupIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          facetGroup_ = new java.util.ArrayList(facetGroup_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder> facetGroupBuilder_;

      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public java.util.List getFacetGroupList() {
        if (facetGroupBuilder_ == null) {
          return java.util.Collections.unmodifiableList(facetGroup_);
        } else {
          return facetGroupBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public int getFacetGroupCount() {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.size();
        } else {
          return facetGroupBuilder_.getCount();
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup getFacetGroup(int index) {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.get(index);
        } else {
          return facetGroupBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder setFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.set(index, value);
          onChanged();
        } else {
          facetGroupBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder setFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.set(index, builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder addFacetGroup(org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.add(value);
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder addFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup value) {
        if (facetGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFacetGroupIsMutable();
          facetGroup_.add(index, value);
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder addFacetGroup(
          org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.add(builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder addFacetGroup(
          int index, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder builderForValue) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.add(index, builderForValue.build());
          onChanged();
        } else {
          facetGroupBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder addAllFacetGroup(
          java.lang.Iterable values) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, facetGroup_);
          onChanged();
        } else {
          facetGroupBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder clearFacetGroup() {
        if (facetGroupBuilder_ == null) {
          facetGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          facetGroupBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public Builder removeFacetGroup(int index) {
        if (facetGroupBuilder_ == null) {
          ensureFacetGroupIsMutable();
          facetGroup_.remove(index);
          onChanged();
        } else {
          facetGroupBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder getFacetGroupBuilder(
          int index) {
        return getFacetGroupFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder getFacetGroupOrBuilder(
          int index) {
        if (facetGroupBuilder_ == null) {
          return facetGroup_.get(index);  } else {
          return facetGroupBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public java.util.List 
           getFacetGroupOrBuilderList() {
        if (facetGroupBuilder_ != null) {
          return facetGroupBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(facetGroup_);
        }
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder addFacetGroupBuilder() {
        return getFacetGroupFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance());
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public org.lumongo.cluster.message.Lumongo.FacetGroup.Builder addFacetGroupBuilder(
          int index) {
        return getFacetGroupFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FacetGroup.getDefaultInstance());
      }
      /**
       * repeated .FacetGroup facetGroup = 4;
       */
      public java.util.List 
           getFacetGroupBuilderList() {
        return getFacetGroupFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder> 
          getFacetGroupFieldBuilder() {
        if (facetGroupBuilder_ == null) {
          facetGroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FacetGroup, org.lumongo.cluster.message.Lumongo.FacetGroup.Builder, org.lumongo.cluster.message.Lumongo.FacetGroupOrBuilder>(
                  facetGroup_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          facetGroup_ = null;
        }
        return facetGroupBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:QueryResponse)
    }

    static {
      defaultInstance = new QueryResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:QueryResponse)
  }

  public interface DeleteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DeleteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string indexName = 1;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 1;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 1;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * required string uniqueId = 2;
     */
    boolean hasUniqueId();
    /**
     * required string uniqueId = 2;
     */
    java.lang.String getUniqueId();
    /**
     * required string uniqueId = 2;
     */
    com.google.protobuf.ByteString
        getUniqueIdBytes();

    /**
     * optional string filename = 3;
     */
    boolean hasFilename();
    /**
     * optional string filename = 3;
     */
    java.lang.String getFilename();
    /**
     * optional string filename = 3;
     */
    com.google.protobuf.ByteString
        getFilenameBytes();

    /**
     * optional bool deleteDocument = 4 [default = true];
     */
    boolean hasDeleteDocument();
    /**
     * optional bool deleteDocument = 4 [default = true];
     */
    boolean getDeleteDocument();

    /**
     * optional bool deleteAllAssociated = 5 [default = true];
     */
    boolean hasDeleteAllAssociated();
    /**
     * optional bool deleteAllAssociated = 5 [default = true];
     */
    boolean getDeleteAllAssociated();
  }
  /**
   * Protobuf type {@code DeleteRequest}
   */
  public static final class DeleteRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:DeleteRequest)
      DeleteRequestOrBuilder {
    // Use DeleteRequest.newBuilder() to construct.
    private DeleteRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DeleteRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final DeleteRequest defaultInstance;
    public static DeleteRequest getDefaultInstance() {
      return defaultInstance;
    }

    public DeleteRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private DeleteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              indexName_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              uniqueId_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              filename_ = bs;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              deleteDocument_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              deleteAllAssociated_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_DeleteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_DeleteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.DeleteRequest.class, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public DeleteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DeleteRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEXNAME_FIELD_NUMBER = 1;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 1;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string indexName = 1;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 1;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UNIQUEID_FIELD_NUMBER = 2;
    private java.lang.Object uniqueId_;
    /**
     * required string uniqueId = 2;
     */
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string uniqueId = 2;
     */
    public java.lang.String getUniqueId() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueId = 2;
     */
    public com.google.protobuf.ByteString
        getUniqueIdBytes() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILENAME_FIELD_NUMBER = 3;
    private java.lang.Object filename_;
    /**
     * optional string filename = 3;
     */
    public boolean hasFilename() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional string filename = 3;
     */
    public java.lang.String getFilename() {
      java.lang.Object ref = filename_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          filename_ = s;
        }
        return s;
      }
    }
    /**
     * optional string filename = 3;
     */
    public com.google.protobuf.ByteString
        getFilenameBytes() {
      java.lang.Object ref = filename_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        filename_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DELETEDOCUMENT_FIELD_NUMBER = 4;
    private boolean deleteDocument_;
    /**
     * optional bool deleteDocument = 4 [default = true];
     */
    public boolean hasDeleteDocument() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bool deleteDocument = 4 [default = true];
     */
    public boolean getDeleteDocument() {
      return deleteDocument_;
    }

    public static final int DELETEALLASSOCIATED_FIELD_NUMBER = 5;
    private boolean deleteAllAssociated_;
    /**
     * optional bool deleteAllAssociated = 5 [default = true];
     */
    public boolean hasDeleteAllAssociated() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional bool deleteAllAssociated = 5 [default = true];
     */
    public boolean getDeleteAllAssociated() {
      return deleteAllAssociated_;
    }

    private void initFields() {
      indexName_ = "";
      uniqueId_ = "";
      filename_ = "";
      deleteDocument_ = true;
      deleteAllAssociated_ = true;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getFilenameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, deleteDocument_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, deleteAllAssociated_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getFilenameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, deleteDocument_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, deleteAllAssociated_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.DeleteRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DeleteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:DeleteRequest)
        org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.DeleteRequest.class, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.DeleteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        filename_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        deleteDocument_ = true;
        bitField0_ = (bitField0_ & ~0x00000008);
        deleteAllAssociated_ = true;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.DeleteRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.DeleteRequest build() {
        org.lumongo.cluster.message.Lumongo.DeleteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.DeleteRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.DeleteRequest result = new org.lumongo.cluster.message.Lumongo.DeleteRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.uniqueId_ = uniqueId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.filename_ = filename_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.deleteDocument_ = deleteDocument_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.deleteAllAssociated_ = deleteAllAssociated_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.DeleteRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.DeleteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.DeleteRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance()) return this;
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000001;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasUniqueId()) {
          bitField0_ |= 0x00000002;
          uniqueId_ = other.uniqueId_;
          onChanged();
        }
        if (other.hasFilename()) {
          bitField0_ |= 0x00000004;
          filename_ = other.filename_;
          onChanged();
        }
        if (other.hasDeleteDocument()) {
          setDeleteDocument(other.getDeleteDocument());
        }
        if (other.hasDeleteAllAssociated()) {
          setDeleteAllAssociated(other.getDeleteAllAssociated());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndexName()) {
          
          return false;
        }
        if (!hasUniqueId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.DeleteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.DeleteRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 1;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string indexName = 1;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 1;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object uniqueId_ = "";
      /**
       * required string uniqueId = 2;
       */
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string uniqueId = 2;
       */
      public java.lang.String getUniqueId() {
        java.lang.Object ref = uniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueId = 2;
       */
      public com.google.protobuf.ByteString
          getUniqueIdBytes() {
        java.lang.Object ref = uniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueId = 2;
       */
      public Builder setUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        uniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 2;
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        uniqueId_ = getDefaultInstance().getUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 2;
       */
      public Builder setUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        uniqueId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object filename_ = "";
      /**
       * optional string filename = 3;
       */
      public boolean hasFilename() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string filename = 3;
       */
      public java.lang.String getFilename() {
        java.lang.Object ref = filename_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            filename_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string filename = 3;
       */
      public com.google.protobuf.ByteString
          getFilenameBytes() {
        java.lang.Object ref = filename_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          filename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string filename = 3;
       */
      public Builder setFilename(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        filename_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string filename = 3;
       */
      public Builder clearFilename() {
        bitField0_ = (bitField0_ & ~0x00000004);
        filename_ = getDefaultInstance().getFilename();
        onChanged();
        return this;
      }
      /**
       * optional string filename = 3;
       */
      public Builder setFilenameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        filename_ = value;
        onChanged();
        return this;
      }

      private boolean deleteDocument_ = true;
      /**
       * optional bool deleteDocument = 4 [default = true];
       */
      public boolean hasDeleteDocument() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bool deleteDocument = 4 [default = true];
       */
      public boolean getDeleteDocument() {
        return deleteDocument_;
      }
      /**
       * optional bool deleteDocument = 4 [default = true];
       */
      public Builder setDeleteDocument(boolean value) {
        bitField0_ |= 0x00000008;
        deleteDocument_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool deleteDocument = 4 [default = true];
       */
      public Builder clearDeleteDocument() {
        bitField0_ = (bitField0_ & ~0x00000008);
        deleteDocument_ = true;
        onChanged();
        return this;
      }

      private boolean deleteAllAssociated_ = true;
      /**
       * optional bool deleteAllAssociated = 5 [default = true];
       */
      public boolean hasDeleteAllAssociated() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bool deleteAllAssociated = 5 [default = true];
       */
      public boolean getDeleteAllAssociated() {
        return deleteAllAssociated_;
      }
      /**
       * optional bool deleteAllAssociated = 5 [default = true];
       */
      public Builder setDeleteAllAssociated(boolean value) {
        bitField0_ |= 0x00000010;
        deleteAllAssociated_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool deleteAllAssociated = 5 [default = true];
       */
      public Builder clearDeleteAllAssociated() {
        bitField0_ = (bitField0_ & ~0x00000010);
        deleteAllAssociated_ = true;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:DeleteRequest)
    }

    static {
      defaultInstance = new DeleteRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:DeleteRequest)
  }

  public interface DeleteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DeleteResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code DeleteResponse}
   */
  public static final class DeleteResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:DeleteResponse)
      DeleteResponseOrBuilder {
    // Use DeleteResponse.newBuilder() to construct.
    private DeleteResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DeleteResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final DeleteResponse defaultInstance;
    public static DeleteResponse getDefaultInstance() {
      return defaultInstance;
    }

    public DeleteResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private DeleteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_DeleteResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_DeleteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.DeleteResponse.class, org.lumongo.cluster.message.Lumongo.DeleteResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public DeleteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DeleteResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.DeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.DeleteResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DeleteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:DeleteResponse)
        org.lumongo.cluster.message.Lumongo.DeleteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.DeleteResponse.class, org.lumongo.cluster.message.Lumongo.DeleteResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.DeleteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_DeleteResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.DeleteResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.DeleteResponse build() {
        org.lumongo.cluster.message.Lumongo.DeleteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.DeleteResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.DeleteResponse result = new org.lumongo.cluster.message.Lumongo.DeleteResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.DeleteResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.DeleteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.DeleteResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.DeleteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.DeleteResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:DeleteResponse)
    }

    static {
      defaultInstance = new DeleteResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:DeleteResponse)
  }

  public interface BatchDeleteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BatchDeleteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .DeleteRequest request = 1;
     */
    java.util.List 
        getRequestList();
    /**
     * repeated .DeleteRequest request = 1;
     */
    org.lumongo.cluster.message.Lumongo.DeleteRequest getRequest(int index);
    /**
     * repeated .DeleteRequest request = 1;
     */
    int getRequestCount();
    /**
     * repeated .DeleteRequest request = 1;
     */
    java.util.List 
        getRequestOrBuilderList();
    /**
     * repeated .DeleteRequest request = 1;
     */
    org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder getRequestOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code BatchDeleteRequest}
   */
  public static final class BatchDeleteRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:BatchDeleteRequest)
      BatchDeleteRequestOrBuilder {
    // Use BatchDeleteRequest.newBuilder() to construct.
    private BatchDeleteRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BatchDeleteRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final BatchDeleteRequest defaultInstance;
    public static BatchDeleteRequest getDefaultInstance() {
      return defaultInstance;
    }

    public BatchDeleteRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private BatchDeleteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                request_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              request_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.DeleteRequest.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          request_ = java.util.Collections.unmodifiableList(request_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.class, org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public BatchDeleteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BatchDeleteRequest(input, extensionRegistry);
      }
    };

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

    public static final int REQUEST_FIELD_NUMBER = 1;
    private java.util.List request_;
    /**
     * repeated .DeleteRequest request = 1;
     */
    public java.util.List getRequestList() {
      return request_;
    }
    /**
     * repeated .DeleteRequest request = 1;
     */
    public java.util.List 
        getRequestOrBuilderList() {
      return request_;
    }
    /**
     * repeated .DeleteRequest request = 1;
     */
    public int getRequestCount() {
      return request_.size();
    }
    /**
     * repeated .DeleteRequest request = 1;
     */
    public org.lumongo.cluster.message.Lumongo.DeleteRequest getRequest(int index) {
      return request_.get(index);
    }
    /**
     * repeated .DeleteRequest request = 1;
     */
    public org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder getRequestOrBuilder(
        int index) {
      return request_.get(index);
    }

    private void initFields() {
      request_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getRequestCount(); i++) {
        if (!getRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < request_.size(); i++) {
        output.writeMessage(1, request_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < request_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, request_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.BatchDeleteRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BatchDeleteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:BatchDeleteRequest)
        org.lumongo.cluster.message.Lumongo.BatchDeleteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.class, org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getRequestFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (requestBuilder_ == null) {
          request_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          requestBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteRequest build() {
        org.lumongo.cluster.message.Lumongo.BatchDeleteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.BatchDeleteRequest result = new org.lumongo.cluster.message.Lumongo.BatchDeleteRequest(this);
        int from_bitField0_ = bitField0_;
        if (requestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            request_ = java.util.Collections.unmodifiableList(request_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.BatchDeleteRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.BatchDeleteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.BatchDeleteRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.getDefaultInstance()) return this;
        if (requestBuilder_ == null) {
          if (!other.request_.isEmpty()) {
            if (request_.isEmpty()) {
              request_ = other.request_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequestIsMutable();
              request_.addAll(other.request_);
            }
            onChanged();
          }
        } else {
          if (!other.request_.isEmpty()) {
            if (requestBuilder_.isEmpty()) {
              requestBuilder_.dispose();
              requestBuilder_ = null;
              request_ = other.request_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requestBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRequestFieldBuilder() : null;
            } else {
              requestBuilder_.addAllMessages(other.request_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getRequestCount(); i++) {
          if (!getRequest(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.BatchDeleteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.BatchDeleteRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List request_ =
        java.util.Collections.emptyList();
      private void ensureRequestIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          request_ = new java.util.ArrayList(request_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.DeleteRequest, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder, org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder> requestBuilder_;

      /**
       * repeated .DeleteRequest request = 1;
       */
      public java.util.List getRequestList() {
        if (requestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(request_);
        } else {
          return requestBuilder_.getMessageList();
        }
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public int getRequestCount() {
        if (requestBuilder_ == null) {
          return request_.size();
        } else {
          return requestBuilder_.getCount();
        }
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public org.lumongo.cluster.message.Lumongo.DeleteRequest getRequest(int index) {
        if (requestBuilder_ == null) {
          return request_.get(index);
        } else {
          return requestBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder setRequest(
          int index, org.lumongo.cluster.message.Lumongo.DeleteRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.set(index, value);
          onChanged();
        } else {
          requestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder setRequest(
          int index, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.set(index, builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder addRequest(org.lumongo.cluster.message.Lumongo.DeleteRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.add(value);
          onChanged();
        } else {
          requestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder addRequest(
          int index, org.lumongo.cluster.message.Lumongo.DeleteRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestIsMutable();
          request_.add(index, value);
          onChanged();
        } else {
          requestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder addRequest(
          org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.add(builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder addRequest(
          int index, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.add(index, builderForValue.build());
          onChanged();
        } else {
          requestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder addAllRequest(
          java.lang.Iterable values) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, request_);
          onChanged();
        } else {
          requestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requestBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public Builder removeRequest(int index) {
        if (requestBuilder_ == null) {
          ensureRequestIsMutable();
          request_.remove(index);
          onChanged();
        } else {
          requestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder getRequestBuilder(
          int index) {
        return getRequestFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder getRequestOrBuilder(
          int index) {
        if (requestBuilder_ == null) {
          return request_.get(index);  } else {
          return requestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public java.util.List 
           getRequestOrBuilderList() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(request_);
        }
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder addRequestBuilder() {
        return getRequestFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance());
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder addRequestBuilder(
          int index) {
        return getRequestFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance());
      }
      /**
       * repeated .DeleteRequest request = 1;
       */
      public java.util.List 
           getRequestBuilderList() {
        return getRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.DeleteRequest, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder, org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder> 
          getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.DeleteRequest, org.lumongo.cluster.message.Lumongo.DeleteRequest.Builder, org.lumongo.cluster.message.Lumongo.DeleteRequestOrBuilder>(
                  request_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:BatchDeleteRequest)
    }

    static {
      defaultInstance = new BatchDeleteRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:BatchDeleteRequest)
  }

  public interface BatchDeleteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BatchDeleteResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code BatchDeleteResponse}
   */
  public static final class BatchDeleteResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:BatchDeleteResponse)
      BatchDeleteResponseOrBuilder {
    // Use BatchDeleteResponse.newBuilder() to construct.
    private BatchDeleteResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BatchDeleteResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final BatchDeleteResponse defaultInstance;
    public static BatchDeleteResponse getDefaultInstance() {
      return defaultInstance;
    }

    public BatchDeleteResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private BatchDeleteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.class, org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public BatchDeleteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BatchDeleteResponse(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.BatchDeleteResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BatchDeleteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:BatchDeleteResponse)
        org.lumongo.cluster.message.Lumongo.BatchDeleteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.class, org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchDeleteResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteResponse build() {
        org.lumongo.cluster.message.Lumongo.BatchDeleteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.BatchDeleteResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.BatchDeleteResponse result = new org.lumongo.cluster.message.Lumongo.BatchDeleteResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.BatchDeleteResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.BatchDeleteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.BatchDeleteResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.BatchDeleteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.BatchDeleteResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:BatchDeleteResponse)
    }

    static {
      defaultInstance = new BatchDeleteResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:BatchDeleteResponse)
  }

  public interface BatchFetchRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BatchFetchRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    java.util.List 
        getFetchRequestList();
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.FetchRequest getFetchRequest(int index);
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    int getFetchRequestCount();
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    java.util.List 
        getFetchRequestOrBuilderList();
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder getFetchRequestOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code BatchFetchRequest}
   */
  public static final class BatchFetchRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:BatchFetchRequest)
      BatchFetchRequestOrBuilder {
    // Use BatchFetchRequest.newBuilder() to construct.
    private BatchFetchRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BatchFetchRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final BatchFetchRequest defaultInstance;
    public static BatchFetchRequest getDefaultInstance() {
      return defaultInstance;
    }

    public BatchFetchRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private BatchFetchRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fetchRequest_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fetchRequest_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FetchRequest.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fetchRequest_ = java.util.Collections.unmodifiableList(fetchRequest_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.BatchFetchRequest.class, org.lumongo.cluster.message.Lumongo.BatchFetchRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public BatchFetchRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BatchFetchRequest(input, extensionRegistry);
      }
    };

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

    public static final int FETCHREQUEST_FIELD_NUMBER = 1;
    private java.util.List fetchRequest_;
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    public java.util.List getFetchRequestList() {
      return fetchRequest_;
    }
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    public java.util.List 
        getFetchRequestOrBuilderList() {
      return fetchRequest_;
    }
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    public int getFetchRequestCount() {
      return fetchRequest_.size();
    }
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FetchRequest getFetchRequest(int index) {
      return fetchRequest_.get(index);
    }
    /**
     * repeated .FetchRequest fetchRequest = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder getFetchRequestOrBuilder(
        int index) {
      return fetchRequest_.get(index);
    }

    private void initFields() {
      fetchRequest_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getFetchRequestCount(); i++) {
        if (!getFetchRequest(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < fetchRequest_.size(); i++) {
        output.writeMessage(1, fetchRequest_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < fetchRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, fetchRequest_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.BatchFetchRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BatchFetchRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:BatchFetchRequest)
        org.lumongo.cluster.message.Lumongo.BatchFetchRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.BatchFetchRequest.class, org.lumongo.cluster.message.Lumongo.BatchFetchRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.BatchFetchRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFetchRequestFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fetchRequestBuilder_ == null) {
          fetchRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fetchRequestBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.BatchFetchRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchRequest build() {
        org.lumongo.cluster.message.Lumongo.BatchFetchRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.BatchFetchRequest result = new org.lumongo.cluster.message.Lumongo.BatchFetchRequest(this);
        int from_bitField0_ = bitField0_;
        if (fetchRequestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            fetchRequest_ = java.util.Collections.unmodifiableList(fetchRequest_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fetchRequest_ = fetchRequest_;
        } else {
          result.fetchRequest_ = fetchRequestBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.BatchFetchRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.BatchFetchRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.BatchFetchRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.BatchFetchRequest.getDefaultInstance()) return this;
        if (fetchRequestBuilder_ == null) {
          if (!other.fetchRequest_.isEmpty()) {
            if (fetchRequest_.isEmpty()) {
              fetchRequest_ = other.fetchRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFetchRequestIsMutable();
              fetchRequest_.addAll(other.fetchRequest_);
            }
            onChanged();
          }
        } else {
          if (!other.fetchRequest_.isEmpty()) {
            if (fetchRequestBuilder_.isEmpty()) {
              fetchRequestBuilder_.dispose();
              fetchRequestBuilder_ = null;
              fetchRequest_ = other.fetchRequest_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fetchRequestBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFetchRequestFieldBuilder() : null;
            } else {
              fetchRequestBuilder_.addAllMessages(other.fetchRequest_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getFetchRequestCount(); i++) {
          if (!getFetchRequest(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.BatchFetchRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.BatchFetchRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List fetchRequest_ =
        java.util.Collections.emptyList();
      private void ensureFetchRequestIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fetchRequest_ = new java.util.ArrayList(fetchRequest_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FetchRequest, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder, org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder> fetchRequestBuilder_;

      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public java.util.List getFetchRequestList() {
        if (fetchRequestBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fetchRequest_);
        } else {
          return fetchRequestBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public int getFetchRequestCount() {
        if (fetchRequestBuilder_ == null) {
          return fetchRequest_.size();
        } else {
          return fetchRequestBuilder_.getCount();
        }
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchRequest getFetchRequest(int index) {
        if (fetchRequestBuilder_ == null) {
          return fetchRequest_.get(index);
        } else {
          return fetchRequestBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder setFetchRequest(
          int index, org.lumongo.cluster.message.Lumongo.FetchRequest value) {
        if (fetchRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchRequestIsMutable();
          fetchRequest_.set(index, value);
          onChanged();
        } else {
          fetchRequestBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder setFetchRequest(
          int index, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder builderForValue) {
        if (fetchRequestBuilder_ == null) {
          ensureFetchRequestIsMutable();
          fetchRequest_.set(index, builderForValue.build());
          onChanged();
        } else {
          fetchRequestBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder addFetchRequest(org.lumongo.cluster.message.Lumongo.FetchRequest value) {
        if (fetchRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchRequestIsMutable();
          fetchRequest_.add(value);
          onChanged();
        } else {
          fetchRequestBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder addFetchRequest(
          int index, org.lumongo.cluster.message.Lumongo.FetchRequest value) {
        if (fetchRequestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchRequestIsMutable();
          fetchRequest_.add(index, value);
          onChanged();
        } else {
          fetchRequestBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder addFetchRequest(
          org.lumongo.cluster.message.Lumongo.FetchRequest.Builder builderForValue) {
        if (fetchRequestBuilder_ == null) {
          ensureFetchRequestIsMutable();
          fetchRequest_.add(builderForValue.build());
          onChanged();
        } else {
          fetchRequestBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder addFetchRequest(
          int index, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder builderForValue) {
        if (fetchRequestBuilder_ == null) {
          ensureFetchRequestIsMutable();
          fetchRequest_.add(index, builderForValue.build());
          onChanged();
        } else {
          fetchRequestBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder addAllFetchRequest(
          java.lang.Iterable values) {
        if (fetchRequestBuilder_ == null) {
          ensureFetchRequestIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fetchRequest_);
          onChanged();
        } else {
          fetchRequestBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder clearFetchRequest() {
        if (fetchRequestBuilder_ == null) {
          fetchRequest_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fetchRequestBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public Builder removeFetchRequest(int index) {
        if (fetchRequestBuilder_ == null) {
          ensureFetchRequestIsMutable();
          fetchRequest_.remove(index);
          onChanged();
        } else {
          fetchRequestBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchRequest.Builder getFetchRequestBuilder(
          int index) {
        return getFetchRequestFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder getFetchRequestOrBuilder(
          int index) {
        if (fetchRequestBuilder_ == null) {
          return fetchRequest_.get(index);  } else {
          return fetchRequestBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public java.util.List 
           getFetchRequestOrBuilderList() {
        if (fetchRequestBuilder_ != null) {
          return fetchRequestBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fetchRequest_);
        }
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchRequest.Builder addFetchRequestBuilder() {
        return getFetchRequestFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance());
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchRequest.Builder addFetchRequestBuilder(
          int index) {
        return getFetchRequestFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance());
      }
      /**
       * repeated .FetchRequest fetchRequest = 1;
       */
      public java.util.List 
           getFetchRequestBuilderList() {
        return getFetchRequestFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FetchRequest, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder, org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder> 
          getFetchRequestFieldBuilder() {
        if (fetchRequestBuilder_ == null) {
          fetchRequestBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FetchRequest, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder, org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder>(
                  fetchRequest_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          fetchRequest_ = null;
        }
        return fetchRequestBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:BatchFetchRequest)
    }

    static {
      defaultInstance = new BatchFetchRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:BatchFetchRequest)
  }

  public interface BatchFetchResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:BatchFetchResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    java.util.List 
        getFetchResponseList();
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    org.lumongo.cluster.message.Lumongo.FetchResponse getFetchResponse(int index);
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    int getFetchResponseCount();
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    java.util.List 
        getFetchResponseOrBuilderList();
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder getFetchResponseOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code BatchFetchResponse}
   */
  public static final class BatchFetchResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:BatchFetchResponse)
      BatchFetchResponseOrBuilder {
    // Use BatchFetchResponse.newBuilder() to construct.
    private BatchFetchResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BatchFetchResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final BatchFetchResponse defaultInstance;
    public static BatchFetchResponse getDefaultInstance() {
      return defaultInstance;
    }

    public BatchFetchResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private BatchFetchResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fetchResponse_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fetchResponse_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.FetchResponse.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fetchResponse_ = java.util.Collections.unmodifiableList(fetchResponse_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.BatchFetchResponse.class, org.lumongo.cluster.message.Lumongo.BatchFetchResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public BatchFetchResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BatchFetchResponse(input, extensionRegistry);
      }
    };

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

    public static final int FETCHRESPONSE_FIELD_NUMBER = 1;
    private java.util.List fetchResponse_;
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    public java.util.List getFetchResponseList() {
      return fetchResponse_;
    }
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    public java.util.List 
        getFetchResponseOrBuilderList() {
      return fetchResponse_;
    }
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    public int getFetchResponseCount() {
      return fetchResponse_.size();
    }
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FetchResponse getFetchResponse(int index) {
      return fetchResponse_.get(index);
    }
    /**
     * repeated .FetchResponse fetchResponse = 1;
     */
    public org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder getFetchResponseOrBuilder(
        int index) {
      return fetchResponse_.get(index);
    }

    private void initFields() {
      fetchResponse_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getFetchResponseCount(); i++) {
        if (!getFetchResponse(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < fetchResponse_.size(); i++) {
        output.writeMessage(1, fetchResponse_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < fetchResponse_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, fetchResponse_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.BatchFetchResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.BatchFetchResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code BatchFetchResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:BatchFetchResponse)
        org.lumongo.cluster.message.Lumongo.BatchFetchResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.BatchFetchResponse.class, org.lumongo.cluster.message.Lumongo.BatchFetchResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.BatchFetchResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFetchResponseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fetchResponseBuilder_ == null) {
          fetchResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fetchResponseBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_BatchFetchResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchResponse build() {
        org.lumongo.cluster.message.Lumongo.BatchFetchResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.BatchFetchResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.BatchFetchResponse result = new org.lumongo.cluster.message.Lumongo.BatchFetchResponse(this);
        int from_bitField0_ = bitField0_;
        if (fetchResponseBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            fetchResponse_ = java.util.Collections.unmodifiableList(fetchResponse_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fetchResponse_ = fetchResponse_;
        } else {
          result.fetchResponse_ = fetchResponseBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.BatchFetchResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.BatchFetchResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.BatchFetchResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance()) return this;
        if (fetchResponseBuilder_ == null) {
          if (!other.fetchResponse_.isEmpty()) {
            if (fetchResponse_.isEmpty()) {
              fetchResponse_ = other.fetchResponse_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFetchResponseIsMutable();
              fetchResponse_.addAll(other.fetchResponse_);
            }
            onChanged();
          }
        } else {
          if (!other.fetchResponse_.isEmpty()) {
            if (fetchResponseBuilder_.isEmpty()) {
              fetchResponseBuilder_.dispose();
              fetchResponseBuilder_ = null;
              fetchResponse_ = other.fetchResponse_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fetchResponseBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFetchResponseFieldBuilder() : null;
            } else {
              fetchResponseBuilder_.addAllMessages(other.fetchResponse_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getFetchResponseCount(); i++) {
          if (!getFetchResponse(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.BatchFetchResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.BatchFetchResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List fetchResponse_ =
        java.util.Collections.emptyList();
      private void ensureFetchResponseIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fetchResponse_ = new java.util.ArrayList(fetchResponse_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FetchResponse, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder, org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder> fetchResponseBuilder_;

      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public java.util.List getFetchResponseList() {
        if (fetchResponseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fetchResponse_);
        } else {
          return fetchResponseBuilder_.getMessageList();
        }
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public int getFetchResponseCount() {
        if (fetchResponseBuilder_ == null) {
          return fetchResponse_.size();
        } else {
          return fetchResponseBuilder_.getCount();
        }
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchResponse getFetchResponse(int index) {
        if (fetchResponseBuilder_ == null) {
          return fetchResponse_.get(index);
        } else {
          return fetchResponseBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder setFetchResponse(
          int index, org.lumongo.cluster.message.Lumongo.FetchResponse value) {
        if (fetchResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchResponseIsMutable();
          fetchResponse_.set(index, value);
          onChanged();
        } else {
          fetchResponseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder setFetchResponse(
          int index, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder builderForValue) {
        if (fetchResponseBuilder_ == null) {
          ensureFetchResponseIsMutable();
          fetchResponse_.set(index, builderForValue.build());
          onChanged();
        } else {
          fetchResponseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder addFetchResponse(org.lumongo.cluster.message.Lumongo.FetchResponse value) {
        if (fetchResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchResponseIsMutable();
          fetchResponse_.add(value);
          onChanged();
        } else {
          fetchResponseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder addFetchResponse(
          int index, org.lumongo.cluster.message.Lumongo.FetchResponse value) {
        if (fetchResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFetchResponseIsMutable();
          fetchResponse_.add(index, value);
          onChanged();
        } else {
          fetchResponseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder addFetchResponse(
          org.lumongo.cluster.message.Lumongo.FetchResponse.Builder builderForValue) {
        if (fetchResponseBuilder_ == null) {
          ensureFetchResponseIsMutable();
          fetchResponse_.add(builderForValue.build());
          onChanged();
        } else {
          fetchResponseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder addFetchResponse(
          int index, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder builderForValue) {
        if (fetchResponseBuilder_ == null) {
          ensureFetchResponseIsMutable();
          fetchResponse_.add(index, builderForValue.build());
          onChanged();
        } else {
          fetchResponseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder addAllFetchResponse(
          java.lang.Iterable values) {
        if (fetchResponseBuilder_ == null) {
          ensureFetchResponseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fetchResponse_);
          onChanged();
        } else {
          fetchResponseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder clearFetchResponse() {
        if (fetchResponseBuilder_ == null) {
          fetchResponse_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fetchResponseBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public Builder removeFetchResponse(int index) {
        if (fetchResponseBuilder_ == null) {
          ensureFetchResponseIsMutable();
          fetchResponse_.remove(index);
          onChanged();
        } else {
          fetchResponseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchResponse.Builder getFetchResponseBuilder(
          int index) {
        return getFetchResponseFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder getFetchResponseOrBuilder(
          int index) {
        if (fetchResponseBuilder_ == null) {
          return fetchResponse_.get(index);  } else {
          return fetchResponseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public java.util.List 
           getFetchResponseOrBuilderList() {
        if (fetchResponseBuilder_ != null) {
          return fetchResponseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fetchResponse_);
        }
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchResponse.Builder addFetchResponseBuilder() {
        return getFetchResponseFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance());
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public org.lumongo.cluster.message.Lumongo.FetchResponse.Builder addFetchResponseBuilder(
          int index) {
        return getFetchResponseFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance());
      }
      /**
       * repeated .FetchResponse fetchResponse = 1;
       */
      public java.util.List 
           getFetchResponseBuilderList() {
        return getFetchResponseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.FetchResponse, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder, org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder> 
          getFetchResponseFieldBuilder() {
        if (fetchResponseBuilder_ == null) {
          fetchResponseBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.FetchResponse, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder, org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder>(
                  fetchResponse_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          fetchResponse_ = null;
        }
        return fetchResponseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:BatchFetchResponse)
    }

    static {
      defaultInstance = new BatchFetchResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:BatchFetchResponse)
  }

  public interface FetchRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FetchRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required string uniqueId = 1;
     */
    boolean hasUniqueId();
    /**
     * required string uniqueId = 1;
     */
    java.lang.String getUniqueId();
    /**
     * required string uniqueId = 1;
     */
    com.google.protobuf.ByteString
        getUniqueIdBytes();

    /**
     * required string indexName = 2;
     */
    boolean hasIndexName();
    /**
     * required string indexName = 2;
     */
    java.lang.String getIndexName();
    /**
     * required string indexName = 2;
     */
    com.google.protobuf.ByteString
        getIndexNameBytes();

    /**
     * optional string fileName = 3;
     */
    boolean hasFileName();
    /**
     * optional string fileName = 3;
     */
    java.lang.String getFileName();
    /**
     * optional string fileName = 3;
     */
    com.google.protobuf.ByteString
        getFileNameBytes();

    /**
     * optional .FetchType resultFetchType = 4 [default = FULL];
     */
    boolean hasResultFetchType();
    /**
     * optional .FetchType resultFetchType = 4 [default = FULL];
     */
    org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType();

    /**
     * optional .FetchType associatedFetchType = 5 [default = META];
     */
    boolean hasAssociatedFetchType();
    /**
     * optional .FetchType associatedFetchType = 5 [default = META];
     */
    org.lumongo.cluster.message.Lumongo.FetchType getAssociatedFetchType();

    /**
     * repeated string documentFields = 6;
     */
    com.google.protobuf.ProtocolStringList
        getDocumentFieldsList();
    /**
     * repeated string documentFields = 6;
     */
    int getDocumentFieldsCount();
    /**
     * repeated string documentFields = 6;
     */
    java.lang.String getDocumentFields(int index);
    /**
     * repeated string documentFields = 6;
     */
    com.google.protobuf.ByteString
        getDocumentFieldsBytes(int index);

    /**
     * repeated string documentMaskedFields = 7;
     */
    com.google.protobuf.ProtocolStringList
        getDocumentMaskedFieldsList();
    /**
     * repeated string documentMaskedFields = 7;
     */
    int getDocumentMaskedFieldsCount();
    /**
     * repeated string documentMaskedFields = 7;
     */
    java.lang.String getDocumentMaskedFields(int index);
    /**
     * repeated string documentMaskedFields = 7;
     */
    com.google.protobuf.ByteString
        getDocumentMaskedFieldsBytes(int index);

    /**
     * optional int64 timestamp = 8;
     */
    boolean hasTimestamp();
    /**
     * optional int64 timestamp = 8;
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code FetchRequest}
   */
  public static final class FetchRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FetchRequest)
      FetchRequestOrBuilder {
    // Use FetchRequest.newBuilder() to construct.
    private FetchRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FetchRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FetchRequest defaultInstance;
    public static FetchRequest getDefaultInstance() {
      return defaultInstance;
    }

    public FetchRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FetchRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              uniqueId_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              indexName_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              fileName_ = bs;
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.FetchType value = org.lumongo.cluster.message.Lumongo.FetchType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(4, rawValue);
              } else {
                bitField0_ |= 0x00000008;
                resultFetchType_ = value;
              }
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              org.lumongo.cluster.message.Lumongo.FetchType value = org.lumongo.cluster.message.Lumongo.FetchType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(5, rawValue);
              } else {
                bitField0_ |= 0x00000010;
                associatedFetchType_ = value;
              }
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                documentFields_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              documentFields_.add(bs);
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                documentMaskedFields_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              documentMaskedFields_.add(bs);
              break;
            }
            case 64: {
              bitField0_ |= 0x00000020;
              timestamp_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          documentFields_ = documentFields_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          documentMaskedFields_ = documentMaskedFields_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FetchRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FetchRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FetchRequest.class, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FetchRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FetchRequest(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int UNIQUEID_FIELD_NUMBER = 1;
    private java.lang.Object uniqueId_;
    /**
     * required string uniqueId = 1;
     */
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required string uniqueId = 1;
     */
    public java.lang.String getUniqueId() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          uniqueId_ = s;
        }
        return s;
      }
    }
    /**
     * required string uniqueId = 1;
     */
    public com.google.protobuf.ByteString
        getUniqueIdBytes() {
      java.lang.Object ref = uniqueId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uniqueId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEXNAME_FIELD_NUMBER = 2;
    private java.lang.Object indexName_;
    /**
     * required string indexName = 2;
     */
    public boolean hasIndexName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required string indexName = 2;
     */
    public java.lang.String getIndexName() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          indexName_ = s;
        }
        return s;
      }
    }
    /**
     * required string indexName = 2;
     */
    public com.google.protobuf.ByteString
        getIndexNameBytes() {
      java.lang.Object ref = indexName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        indexName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILENAME_FIELD_NUMBER = 3;
    private java.lang.Object fileName_;
    /**
     * optional string fileName = 3;
     */
    public boolean hasFileName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional string fileName = 3;
     */
    public java.lang.String getFileName() {
      java.lang.Object ref = fileName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          fileName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string fileName = 3;
     */
    public com.google.protobuf.ByteString
        getFileNameBytes() {
      java.lang.Object ref = fileName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fileName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTFETCHTYPE_FIELD_NUMBER = 4;
    private org.lumongo.cluster.message.Lumongo.FetchType resultFetchType_;
    /**
     * optional .FetchType resultFetchType = 4 [default = FULL];
     */
    public boolean hasResultFetchType() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional .FetchType resultFetchType = 4 [default = FULL];
     */
    public org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType() {
      return resultFetchType_;
    }

    public static final int ASSOCIATEDFETCHTYPE_FIELD_NUMBER = 5;
    private org.lumongo.cluster.message.Lumongo.FetchType associatedFetchType_;
    /**
     * optional .FetchType associatedFetchType = 5 [default = META];
     */
    public boolean hasAssociatedFetchType() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional .FetchType associatedFetchType = 5 [default = META];
     */
    public org.lumongo.cluster.message.Lumongo.FetchType getAssociatedFetchType() {
      return associatedFetchType_;
    }

    public static final int DOCUMENTFIELDS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList documentFields_;
    /**
     * repeated string documentFields = 6;
     */
    public com.google.protobuf.ProtocolStringList
        getDocumentFieldsList() {
      return documentFields_;
    }
    /**
     * repeated string documentFields = 6;
     */
    public int getDocumentFieldsCount() {
      return documentFields_.size();
    }
    /**
     * repeated string documentFields = 6;
     */
    public java.lang.String getDocumentFields(int index) {
      return documentFields_.get(index);
    }
    /**
     * repeated string documentFields = 6;
     */
    public com.google.protobuf.ByteString
        getDocumentFieldsBytes(int index) {
      return documentFields_.getByteString(index);
    }

    public static final int DOCUMENTMASKEDFIELDS_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList documentMaskedFields_;
    /**
     * repeated string documentMaskedFields = 7;
     */
    public com.google.protobuf.ProtocolStringList
        getDocumentMaskedFieldsList() {
      return documentMaskedFields_;
    }
    /**
     * repeated string documentMaskedFields = 7;
     */
    public int getDocumentMaskedFieldsCount() {
      return documentMaskedFields_.size();
    }
    /**
     * repeated string documentMaskedFields = 7;
     */
    public java.lang.String getDocumentMaskedFields(int index) {
      return documentMaskedFields_.get(index);
    }
    /**
     * repeated string documentMaskedFields = 7;
     */
    public com.google.protobuf.ByteString
        getDocumentMaskedFieldsBytes(int index) {
      return documentMaskedFields_.getByteString(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 8;
    private long timestamp_;
    /**
     * optional int64 timestamp = 8;
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional int64 timestamp = 8;
     */
    public long getTimestamp() {
      return timestamp_;
    }

    private void initFields() {
      uniqueId_ = "";
      indexName_ = "";
      fileName_ = "";
      resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.FULL;
      associatedFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.META;
      documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      timestamp_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasUniqueId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndexName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getFileNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(4, resultFetchType_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeEnum(5, associatedFetchType_.getNumber());
      }
      for (int i = 0; i < documentFields_.size(); i++) {
        output.writeBytes(6, documentFields_.getByteString(i));
      }
      for (int i = 0; i < documentMaskedFields_.size(); i++) {
        output.writeBytes(7, documentMaskedFields_.getByteString(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt64(8, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUniqueIdBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getIndexNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getFileNameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, resultFetchType_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, associatedFetchType_.getNumber());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < documentFields_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(documentFields_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getDocumentFieldsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < documentMaskedFields_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(documentMaskedFields_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getDocumentMaskedFieldsList().size();
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FetchRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FetchRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FetchRequest)
        org.lumongo.cluster.message.Lumongo.FetchRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FetchRequest.class, org.lumongo.cluster.message.Lumongo.FetchRequest.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FetchRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uniqueId_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        indexName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        fileName_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.FULL;
        bitField0_ = (bitField0_ & ~0x00000008);
        associatedFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.META;
        bitField0_ = (bitField0_ & ~0x00000010);
        documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchRequest_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FetchRequest getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FetchRequest build() {
        org.lumongo.cluster.message.Lumongo.FetchRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FetchRequest buildPartial() {
        org.lumongo.cluster.message.Lumongo.FetchRequest result = new org.lumongo.cluster.message.Lumongo.FetchRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uniqueId_ = uniqueId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.indexName_ = indexName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.fileName_ = fileName_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.resultFetchType_ = resultFetchType_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.associatedFetchType_ = associatedFetchType_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          documentFields_ = documentFields_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.documentFields_ = documentFields_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          documentMaskedFields_ = documentMaskedFields_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.documentMaskedFields_ = documentMaskedFields_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000020;
        }
        result.timestamp_ = timestamp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FetchRequest) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FetchRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FetchRequest other) {
        if (other == org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance()) return this;
        if (other.hasUniqueId()) {
          bitField0_ |= 0x00000001;
          uniqueId_ = other.uniqueId_;
          onChanged();
        }
        if (other.hasIndexName()) {
          bitField0_ |= 0x00000002;
          indexName_ = other.indexName_;
          onChanged();
        }
        if (other.hasFileName()) {
          bitField0_ |= 0x00000004;
          fileName_ = other.fileName_;
          onChanged();
        }
        if (other.hasResultFetchType()) {
          setResultFetchType(other.getResultFetchType());
        }
        if (other.hasAssociatedFetchType()) {
          setAssociatedFetchType(other.getAssociatedFetchType());
        }
        if (!other.documentFields_.isEmpty()) {
          if (documentFields_.isEmpty()) {
            documentFields_ = other.documentFields_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureDocumentFieldsIsMutable();
            documentFields_.addAll(other.documentFields_);
          }
          onChanged();
        }
        if (!other.documentMaskedFields_.isEmpty()) {
          if (documentMaskedFields_.isEmpty()) {
            documentMaskedFields_ = other.documentMaskedFields_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureDocumentMaskedFieldsIsMutable();
            documentMaskedFields_.addAll(other.documentMaskedFields_);
          }
          onChanged();
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasUniqueId()) {
          
          return false;
        }
        if (!hasIndexName()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FetchRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FetchRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object uniqueId_ = "";
      /**
       * required string uniqueId = 1;
       */
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required string uniqueId = 1;
       */
      public java.lang.String getUniqueId() {
        java.lang.Object ref = uniqueId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            uniqueId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public com.google.protobuf.ByteString
          getUniqueIdBytes() {
        java.lang.Object ref = uniqueId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uniqueId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqueId_ = getDefaultInstance().getUniqueId();
        onChanged();
        return this;
      }
      /**
       * required string uniqueId = 1;
       */
      public Builder setUniqueIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uniqueId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object indexName_ = "";
      /**
       * required string indexName = 2;
       */
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required string indexName = 2;
       */
      public java.lang.String getIndexName() {
        java.lang.Object ref = indexName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            indexName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public com.google.protobuf.ByteString
          getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder clearIndexName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        indexName_ = getDefaultInstance().getIndexName();
        onChanged();
        return this;
      }
      /**
       * required string indexName = 2;
       */
      public Builder setIndexNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        indexName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fileName_ = "";
      /**
       * optional string fileName = 3;
       */
      public boolean hasFileName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string fileName = 3;
       */
      public java.lang.String getFileName() {
        java.lang.Object ref = fileName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fileName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string fileName = 3;
       */
      public com.google.protobuf.ByteString
          getFileNameBytes() {
        java.lang.Object ref = fileName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fileName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string fileName = 3;
       */
      public Builder setFileName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        fileName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string fileName = 3;
       */
      public Builder clearFileName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        fileName_ = getDefaultInstance().getFileName();
        onChanged();
        return this;
      }
      /**
       * optional string fileName = 3;
       */
      public Builder setFileNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        fileName_ = value;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FetchType resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.FULL;
      /**
       * optional .FetchType resultFetchType = 4 [default = FULL];
       */
      public boolean hasResultFetchType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional .FetchType resultFetchType = 4 [default = FULL];
       */
      public org.lumongo.cluster.message.Lumongo.FetchType getResultFetchType() {
        return resultFetchType_;
      }
      /**
       * optional .FetchType resultFetchType = 4 [default = FULL];
       */
      public Builder setResultFetchType(org.lumongo.cluster.message.Lumongo.FetchType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        resultFetchType_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .FetchType resultFetchType = 4 [default = FULL];
       */
      public Builder clearResultFetchType() {
        bitField0_ = (bitField0_ & ~0x00000008);
        resultFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.FULL;
        onChanged();
        return this;
      }

      private org.lumongo.cluster.message.Lumongo.FetchType associatedFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.META;
      /**
       * optional .FetchType associatedFetchType = 5 [default = META];
       */
      public boolean hasAssociatedFetchType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional .FetchType associatedFetchType = 5 [default = META];
       */
      public org.lumongo.cluster.message.Lumongo.FetchType getAssociatedFetchType() {
        return associatedFetchType_;
      }
      /**
       * optional .FetchType associatedFetchType = 5 [default = META];
       */
      public Builder setAssociatedFetchType(org.lumongo.cluster.message.Lumongo.FetchType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        associatedFetchType_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .FetchType associatedFetchType = 5 [default = META];
       */
      public Builder clearAssociatedFetchType() {
        bitField0_ = (bitField0_ & ~0x00000010);
        associatedFetchType_ = org.lumongo.cluster.message.Lumongo.FetchType.META;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDocumentFieldsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          documentFields_ = new com.google.protobuf.LazyStringArrayList(documentFields_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * repeated string documentFields = 6;
       */
      public com.google.protobuf.ProtocolStringList
          getDocumentFieldsList() {
        return documentFields_.getUnmodifiableView();
      }
      /**
       * repeated string documentFields = 6;
       */
      public int getDocumentFieldsCount() {
        return documentFields_.size();
      }
      /**
       * repeated string documentFields = 6;
       */
      public java.lang.String getDocumentFields(int index) {
        return documentFields_.get(index);
      }
      /**
       * repeated string documentFields = 6;
       */
      public com.google.protobuf.ByteString
          getDocumentFieldsBytes(int index) {
        return documentFields_.getByteString(index);
      }
      /**
       * repeated string documentFields = 6;
       */
      public Builder setDocumentFields(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 6;
       */
      public Builder addDocumentFields(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 6;
       */
      public Builder addAllDocumentFields(
          java.lang.Iterable values) {
        ensureDocumentFieldsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, documentFields_);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 6;
       */
      public Builder clearDocumentFields() {
        documentFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * repeated string documentFields = 6;
       */
      public Builder addDocumentFieldsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentFieldsIsMutable();
        documentFields_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDocumentMaskedFieldsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          documentMaskedFields_ = new com.google.protobuf.LazyStringArrayList(documentMaskedFields_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public com.google.protobuf.ProtocolStringList
          getDocumentMaskedFieldsList() {
        return documentMaskedFields_.getUnmodifiableView();
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public int getDocumentMaskedFieldsCount() {
        return documentMaskedFields_.size();
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public java.lang.String getDocumentMaskedFields(int index) {
        return documentMaskedFields_.get(index);
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public com.google.protobuf.ByteString
          getDocumentMaskedFieldsBytes(int index) {
        return documentMaskedFields_.getByteString(index);
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public Builder setDocumentMaskedFields(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public Builder addDocumentMaskedFields(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public Builder addAllDocumentMaskedFields(
          java.lang.Iterable values) {
        ensureDocumentMaskedFieldsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, documentMaskedFields_);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public Builder clearDocumentMaskedFields() {
        documentMaskedFields_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * repeated string documentMaskedFields = 7;
       */
      public Builder addDocumentMaskedFieldsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDocumentMaskedFieldsIsMutable();
        documentMaskedFields_.add(value);
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * optional int64 timestamp = 8;
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional int64 timestamp = 8;
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * optional int64 timestamp = 8;
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000080;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int64 timestamp = 8;
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000080);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:FetchRequest)
    }

    static {
      defaultInstance = new FetchRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FetchRequest)
  }

  public interface FetchResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FetchResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .ResultDocument resultDocument = 1;
     */
    boolean hasResultDocument();
    /**
     * optional .ResultDocument resultDocument = 1;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument();
    /**
     * optional .ResultDocument resultDocument = 1;
     */
    org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder();

    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    java.util.List 
        getAssociatedDocumentList();
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index);
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    int getAssociatedDocumentCount();
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    java.util.List 
        getAssociatedDocumentOrBuilderList();
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code FetchResponse}
   */
  public static final class FetchResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:FetchResponse)
      FetchResponseOrBuilder {
    // Use FetchResponse.newBuilder() to construct.
    private FetchResponse(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FetchResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final FetchResponse defaultInstance;
    public static FetchResponse getDefaultInstance() {
      return defaultInstance;
    }

    public FetchResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private FetchResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.lumongo.cluster.message.Lumongo.ResultDocument.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = resultDocument_.toBuilder();
              }
              resultDocument_ = input.readMessage(org.lumongo.cluster.message.Lumongo.ResultDocument.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(resultDocument_);
                resultDocument_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                associatedDocument_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              associatedDocument_.add(input.readMessage(org.lumongo.cluster.message.Lumongo.AssociatedDocument.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          associatedDocument_ = java.util.Collections.unmodifiableList(associatedDocument_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FetchResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.lumongo.cluster.message.Lumongo.internal_static_FetchResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.lumongo.cluster.message.Lumongo.FetchResponse.class, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder.class);
    }

    public static com.google.protobuf.Parser PARSER =
        new com.google.protobuf.AbstractParser() {
      public FetchResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FetchResponse(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int RESULTDOCUMENT_FIELD_NUMBER = 1;
    private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_;
    /**
     * optional .ResultDocument resultDocument = 1;
     */
    public boolean hasResultDocument() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional .ResultDocument resultDocument = 1;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
      return resultDocument_;
    }
    /**
     * optional .ResultDocument resultDocument = 1;
     */
    public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
      return resultDocument_;
    }

    public static final int ASSOCIATEDDOCUMENT_FIELD_NUMBER = 2;
    private java.util.List associatedDocument_;
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    public java.util.List getAssociatedDocumentList() {
      return associatedDocument_;
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    public java.util.List 
        getAssociatedDocumentOrBuilderList() {
      return associatedDocument_;
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    public int getAssociatedDocumentCount() {
      return associatedDocument_.size();
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    public org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index) {
      return associatedDocument_.get(index);
    }
    /**
     * repeated .AssociatedDocument associatedDocument = 2;
     */
    public org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
        int index) {
      return associatedDocument_.get(index);
    }

    private void initFields() {
      resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      associatedDocument_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasResultDocument()) {
        if (!getResultDocument().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAssociatedDocumentCount(); i++) {
        if (!getAssociatedDocument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, resultDocument_);
      }
      for (int i = 0; i < associatedDocument_.size(); i++) {
        output.writeMessage(2, associatedDocument_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, resultDocument_);
      }
      for (int i = 0; i < associatedDocument_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, associatedDocument_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.lumongo.cluster.message.Lumongo.FetchResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.lumongo.cluster.message.Lumongo.FetchResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FetchResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:FetchResponse)
        org.lumongo.cluster.message.Lumongo.FetchResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.lumongo.cluster.message.Lumongo.FetchResponse.class, org.lumongo.cluster.message.Lumongo.FetchResponse.Builder.class);
      }

      // Construct using org.lumongo.cluster.message.Lumongo.FetchResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getResultDocumentFieldBuilder();
          getAssociatedDocumentFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (associatedDocumentBuilder_ == null) {
          associatedDocument_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          associatedDocumentBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.lumongo.cluster.message.Lumongo.internal_static_FetchResponse_descriptor;
      }

      public org.lumongo.cluster.message.Lumongo.FetchResponse getDefaultInstanceForType() {
        return org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance();
      }

      public org.lumongo.cluster.message.Lumongo.FetchResponse build() {
        org.lumongo.cluster.message.Lumongo.FetchResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.lumongo.cluster.message.Lumongo.FetchResponse buildPartial() {
        org.lumongo.cluster.message.Lumongo.FetchResponse result = new org.lumongo.cluster.message.Lumongo.FetchResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (resultDocumentBuilder_ == null) {
          result.resultDocument_ = resultDocument_;
        } else {
          result.resultDocument_ = resultDocumentBuilder_.build();
        }
        if (associatedDocumentBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            associatedDocument_ = java.util.Collections.unmodifiableList(associatedDocument_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.associatedDocument_ = associatedDocument_;
        } else {
          result.associatedDocument_ = associatedDocumentBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.lumongo.cluster.message.Lumongo.FetchResponse) {
          return mergeFrom((org.lumongo.cluster.message.Lumongo.FetchResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.lumongo.cluster.message.Lumongo.FetchResponse other) {
        if (other == org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance()) return this;
        if (other.hasResultDocument()) {
          mergeResultDocument(other.getResultDocument());
        }
        if (associatedDocumentBuilder_ == null) {
          if (!other.associatedDocument_.isEmpty()) {
            if (associatedDocument_.isEmpty()) {
              associatedDocument_ = other.associatedDocument_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAssociatedDocumentIsMutable();
              associatedDocument_.addAll(other.associatedDocument_);
            }
            onChanged();
          }
        } else {
          if (!other.associatedDocument_.isEmpty()) {
            if (associatedDocumentBuilder_.isEmpty()) {
              associatedDocumentBuilder_.dispose();
              associatedDocumentBuilder_ = null;
              associatedDocument_ = other.associatedDocument_;
              bitField0_ = (bitField0_ & ~0x00000002);
              associatedDocumentBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAssociatedDocumentFieldBuilder() : null;
            } else {
              associatedDocumentBuilder_.addAllMessages(other.associatedDocument_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (hasResultDocument()) {
          if (!getResultDocument().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAssociatedDocumentCount(); i++) {
          if (!getAssociatedDocument(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.lumongo.cluster.message.Lumongo.FetchResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.lumongo.cluster.message.Lumongo.FetchResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.lumongo.cluster.message.Lumongo.ResultDocument resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> resultDocumentBuilder_;
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public boolean hasResultDocument() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument getResultDocument() {
        if (resultDocumentBuilder_ == null) {
          return resultDocument_;
        } else {
          return resultDocumentBuilder_.getMessage();
        }
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public Builder setResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resultDocument_ = value;
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public Builder setResultDocument(
          org.lumongo.cluster.message.Lumongo.ResultDocument.Builder builderForValue) {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = builderForValue.build();
          onChanged();
        } else {
          resultDocumentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public Builder mergeResultDocument(org.lumongo.cluster.message.Lumongo.ResultDocument value) {
        if (resultDocumentBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              resultDocument_ != org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance()) {
            resultDocument_ =
              org.lumongo.cluster.message.Lumongo.ResultDocument.newBuilder(resultDocument_).mergeFrom(value).buildPartial();
          } else {
            resultDocument_ = value;
          }
          onChanged();
        } else {
          resultDocumentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public Builder clearResultDocument() {
        if (resultDocumentBuilder_ == null) {
          resultDocument_ = org.lumongo.cluster.message.Lumongo.ResultDocument.getDefaultInstance();
          onChanged();
        } else {
          resultDocumentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocument.Builder getResultDocumentBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getResultDocumentFieldBuilder().getBuilder();
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      public org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder getResultDocumentOrBuilder() {
        if (resultDocumentBuilder_ != null) {
          return resultDocumentBuilder_.getMessageOrBuilder();
        } else {
          return resultDocument_;
        }
      }
      /**
       * optional .ResultDocument resultDocument = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder> 
          getResultDocumentFieldBuilder() {
        if (resultDocumentBuilder_ == null) {
          resultDocumentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.lumongo.cluster.message.Lumongo.ResultDocument, org.lumongo.cluster.message.Lumongo.ResultDocument.Builder, org.lumongo.cluster.message.Lumongo.ResultDocumentOrBuilder>(
                  getResultDocument(),
                  getParentForChildren(),
                  isClean());
          resultDocument_ = null;
        }
        return resultDocumentBuilder_;
      }

      private java.util.List associatedDocument_ =
        java.util.Collections.emptyList();
      private void ensureAssociatedDocumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          associatedDocument_ = new java.util.ArrayList(associatedDocument_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder> associatedDocumentBuilder_;

      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public java.util.List getAssociatedDocumentList() {
        if (associatedDocumentBuilder_ == null) {
          return java.util.Collections.unmodifiableList(associatedDocument_);
        } else {
          return associatedDocumentBuilder_.getMessageList();
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public int getAssociatedDocumentCount() {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.size();
        } else {
          return associatedDocumentBuilder_.getCount();
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument getAssociatedDocument(int index) {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.get(index);
        } else {
          return associatedDocumentBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder setAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.set(index, value);
          onChanged();
        } else {
          associatedDocumentBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder setAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.set(index, builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder addAssociatedDocument(org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(value);
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder addAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument value) {
        if (associatedDocumentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(index, value);
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder addAssociatedDocument(
          org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder addAssociatedDocument(
          int index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder builderForValue) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.add(index, builderForValue.build());
          onChanged();
        } else {
          associatedDocumentBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder addAllAssociatedDocument(
          java.lang.Iterable values) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, associatedDocument_);
          onChanged();
        } else {
          associatedDocumentBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder clearAssociatedDocument() {
        if (associatedDocumentBuilder_ == null) {
          associatedDocument_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          associatedDocumentBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public Builder removeAssociatedDocument(int index) {
        if (associatedDocumentBuilder_ == null) {
          ensureAssociatedDocumentIsMutable();
          associatedDocument_.remove(index);
          onChanged();
        } else {
          associatedDocumentBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder getAssociatedDocumentBuilder(
          int index) {
        return getAssociatedDocumentFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder getAssociatedDocumentOrBuilder(
          int index) {
        if (associatedDocumentBuilder_ == null) {
          return associatedDocument_.get(index);  } else {
          return associatedDocumentBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public java.util.List 
           getAssociatedDocumentOrBuilderList() {
        if (associatedDocumentBuilder_ != null) {
          return associatedDocumentBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(associatedDocument_);
        }
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder addAssociatedDocumentBuilder() {
        return getAssociatedDocumentFieldBuilder().addBuilder(
            org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance());
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder addAssociatedDocumentBuilder(
          int index) {
        return getAssociatedDocumentFieldBuilder().addBuilder(
            index, org.lumongo.cluster.message.Lumongo.AssociatedDocument.getDefaultInstance());
      }
      /**
       * repeated .AssociatedDocument associatedDocument = 2;
       */
      public java.util.List 
           getAssociatedDocumentBuilderList() {
        return getAssociatedDocumentFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder> 
          getAssociatedDocumentFieldBuilder() {
        if (associatedDocumentBuilder_ == null) {
          associatedDocumentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.lumongo.cluster.message.Lumongo.AssociatedDocument, org.lumongo.cluster.message.Lumongo.AssociatedDocument.Builder, org.lumongo.cluster.message.Lumongo.AssociatedDocumentOrBuilder>(
                  associatedDocument_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          associatedDocument_ = null;
        }
        return associatedDocumentBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:FetchResponse)
    }

    static {
      defaultInstance = new FetchResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:FetchResponse)
  }

  /**
   * Protobuf service {@code ExternalService}
   */
  public static abstract class ExternalService
      implements com.google.protobuf.Service {
    protected ExternalService() {}

    public interface Interface {
      /**
       * rpc Query(.QueryRequest) returns (.QueryResponse);
       */
      public abstract void query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Store(.StoreRequest) returns (.StoreResponse);
       */
      public abstract void store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Delete(.DeleteRequest) returns (.DeleteResponse);
       */
      public abstract void delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc BatchDelete(.BatchDeleteRequest) returns (.BatchDeleteResponse);
       */
      public abstract void batchDelete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Fetch(.FetchRequest) returns (.FetchResponse);
       */
      public abstract void fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc BatchFetch(.BatchFetchRequest) returns (.BatchFetchResponse);
       */
      public abstract void batchFetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchFetchRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc CreateIndex(.IndexCreateRequest) returns (.IndexCreateResponse);
       */
      public abstract void createIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexCreateRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc ChangeIndex(.IndexSettingsRequest) returns (.IndexSettingsResponse);
       */
      public abstract void changeIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc DeleteIndex(.IndexDeleteRequest) returns (.IndexDeleteResponse);
       */
      public abstract void deleteIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetIndexes(.GetIndexesRequest) returns (.GetIndexesResponse);
       */
      public abstract void getIndexes(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetIndexesRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetNumberOfDocs(.GetNumberOfDocsRequest) returns (.GetNumberOfDocsResponse);
       */
      public abstract void getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Clear(.ClearRequest) returns (.ClearResponse);
       */
      public abstract void clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Optimize(.OptimizeRequest) returns (.OptimizeResponse);
       */
      public abstract void optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetFieldNames(.GetFieldNamesRequest) returns (.GetFieldNamesResponse);
       */
      public abstract void getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetTerms(.GetTermsRequest) returns (.GetTermsResponse);
       */
      public abstract void getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetMembers(.GetMembersRequest) returns (.GetMembersResponse);
       */
      public abstract void getMembers(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetMembersRequest request,
          com.google.protobuf.RpcCallback done);

    }

    public static com.google.protobuf.Service newReflectiveService(
        final Interface impl) {
      return new ExternalService() {
        @java.lang.Override
        public  void query(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.QueryRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.query(controller, request, done);
        }

        @java.lang.Override
        public  void store(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.StoreRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.store(controller, request, done);
        }

        @java.lang.Override
        public  void delete(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.DeleteRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.delete(controller, request, done);
        }

        @java.lang.Override
        public  void batchDelete(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.batchDelete(controller, request, done);
        }

        @java.lang.Override
        public  void fetch(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.FetchRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.fetch(controller, request, done);
        }

        @java.lang.Override
        public  void batchFetch(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.BatchFetchRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.batchFetch(controller, request, done);
        }

        @java.lang.Override
        public  void createIndex(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.IndexCreateRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.createIndex(controller, request, done);
        }

        @java.lang.Override
        public  void changeIndex(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.changeIndex(controller, request, done);
        }

        @java.lang.Override
        public  void deleteIndex(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.deleteIndex(controller, request, done);
        }

        @java.lang.Override
        public  void getIndexes(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetIndexesRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getIndexes(controller, request, done);
        }

        @java.lang.Override
        public  void getNumberOfDocs(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getNumberOfDocs(controller, request, done);
        }

        @java.lang.Override
        public  void clear(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.ClearRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.clear(controller, request, done);
        }

        @java.lang.Override
        public  void optimize(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.optimize(controller, request, done);
        }

        @java.lang.Override
        public  void getFieldNames(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getFieldNames(controller, request, done);
        }

        @java.lang.Override
        public  void getTerms(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getTerms(controller, request, done);
        }

        @java.lang.Override
        public  void getMembers(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetMembersRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getMembers(controller, request, done);
        }

      };
    }

    public static com.google.protobuf.BlockingService
        newReflectiveBlockingService(final BlockingInterface impl) {
      return new com.google.protobuf.BlockingService() {
        public final com.google.protobuf.Descriptors.ServiceDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }

        public final com.google.protobuf.Message callBlockingMethod(
            com.google.protobuf.Descriptors.MethodDescriptor method,
            com.google.protobuf.RpcController controller,
            com.google.protobuf.Message request)
            throws com.google.protobuf.ServiceException {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.callBlockingMethod() given method descriptor for " +
              "wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return impl.query(controller, (org.lumongo.cluster.message.Lumongo.QueryRequest)request);
            case 1:
              return impl.store(controller, (org.lumongo.cluster.message.Lumongo.StoreRequest)request);
            case 2:
              return impl.delete(controller, (org.lumongo.cluster.message.Lumongo.DeleteRequest)request);
            case 3:
              return impl.batchDelete(controller, (org.lumongo.cluster.message.Lumongo.BatchDeleteRequest)request);
            case 4:
              return impl.fetch(controller, (org.lumongo.cluster.message.Lumongo.FetchRequest)request);
            case 5:
              return impl.batchFetch(controller, (org.lumongo.cluster.message.Lumongo.BatchFetchRequest)request);
            case 6:
              return impl.createIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexCreateRequest)request);
            case 7:
              return impl.changeIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexSettingsRequest)request);
            case 8:
              return impl.deleteIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexDeleteRequest)request);
            case 9:
              return impl.getIndexes(controller, (org.lumongo.cluster.message.Lumongo.GetIndexesRequest)request);
            case 10:
              return impl.getNumberOfDocs(controller, (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest)request);
            case 11:
              return impl.clear(controller, (org.lumongo.cluster.message.Lumongo.ClearRequest)request);
            case 12:
              return impl.optimize(controller, (org.lumongo.cluster.message.Lumongo.OptimizeRequest)request);
            case 13:
              return impl.getFieldNames(controller, (org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest)request);
            case 14:
              return impl.getTerms(controller, (org.lumongo.cluster.message.Lumongo.GetTermsRequest)request);
            case 15:
              return impl.getMembers(controller, (org.lumongo.cluster.message.Lumongo.GetMembersRequest)request);
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getRequestPrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getRequestPrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance();
            case 1:
              return org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance();
            case 2:
              return org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance();
            case 3:
              return org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.getDefaultInstance();
            case 4:
              return org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance();
            case 5:
              return org.lumongo.cluster.message.Lumongo.BatchFetchRequest.getDefaultInstance();
            case 6:
              return org.lumongo.cluster.message.Lumongo.IndexCreateRequest.getDefaultInstance();
            case 7:
              return org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.getDefaultInstance();
            case 8:
              return org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.getDefaultInstance();
            case 9:
              return org.lumongo.cluster.message.Lumongo.GetIndexesRequest.getDefaultInstance();
            case 10:
              return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance();
            case 11:
              return org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance();
            case 12:
              return org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance();
            case 13:
              return org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance();
            case 14:
              return org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance();
            case 15:
              return org.lumongo.cluster.message.Lumongo.GetMembersRequest.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getResponsePrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getResponsePrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance();
            case 1:
              return org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance();
            case 2:
              return org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance();
            case 3:
              return org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance();
            case 4:
              return org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance();
            case 5:
              return org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance();
            case 6:
              return org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance();
            case 7:
              return org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance();
            case 8:
              return org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance();
            case 9:
              return org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance();
            case 10:
              return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance();
            case 11:
              return org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance();
            case 12:
              return org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance();
            case 13:
              return org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance();
            case 14:
              return org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance();
            case 15:
              return org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

      };
    }

    /**
     * rpc Query(.QueryRequest) returns (.QueryResponse);
     */
    public abstract void query(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.QueryRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Store(.StoreRequest) returns (.StoreResponse);
     */
    public abstract void store(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.StoreRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Delete(.DeleteRequest) returns (.DeleteResponse);
     */
    public abstract void delete(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.DeleteRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc BatchDelete(.BatchDeleteRequest) returns (.BatchDeleteResponse);
     */
    public abstract void batchDelete(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Fetch(.FetchRequest) returns (.FetchResponse);
     */
    public abstract void fetch(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.FetchRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc BatchFetch(.BatchFetchRequest) returns (.BatchFetchResponse);
     */
    public abstract void batchFetch(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.BatchFetchRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc CreateIndex(.IndexCreateRequest) returns (.IndexCreateResponse);
     */
    public abstract void createIndex(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.IndexCreateRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc ChangeIndex(.IndexSettingsRequest) returns (.IndexSettingsResponse);
     */
    public abstract void changeIndex(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc DeleteIndex(.IndexDeleteRequest) returns (.IndexDeleteResponse);
     */
    public abstract void deleteIndex(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetIndexes(.GetIndexesRequest) returns (.GetIndexesResponse);
     */
    public abstract void getIndexes(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetIndexesRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetNumberOfDocs(.GetNumberOfDocsRequest) returns (.GetNumberOfDocsResponse);
     */
    public abstract void getNumberOfDocs(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Clear(.ClearRequest) returns (.ClearResponse);
     */
    public abstract void clear(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.ClearRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Optimize(.OptimizeRequest) returns (.OptimizeResponse);
     */
    public abstract void optimize(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetFieldNames(.GetFieldNamesRequest) returns (.GetFieldNamesResponse);
     */
    public abstract void getFieldNames(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetTerms(.GetTermsRequest) returns (.GetTermsResponse);
     */
    public abstract void getTerms(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetMembers(.GetMembersRequest) returns (.GetMembersResponse);
     */
    public abstract void getMembers(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetMembersRequest request,
        com.google.protobuf.RpcCallback done);

    public static final
        com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.getDescriptor().getServices().get(0);
    }
    public final com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }

    public final void callMethod(
        com.google.protobuf.Descriptors.MethodDescriptor method,
        com.google.protobuf.RpcController controller,
        com.google.protobuf.Message request,
        com.google.protobuf.RpcCallback<
          com.google.protobuf.Message> done) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.callMethod() given method descriptor for wrong " +
          "service type.");
      }
      switch(method.getIndex()) {
        case 0:
          this.query(controller, (org.lumongo.cluster.message.Lumongo.QueryRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 1:
          this.store(controller, (org.lumongo.cluster.message.Lumongo.StoreRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 2:
          this.delete(controller, (org.lumongo.cluster.message.Lumongo.DeleteRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 3:
          this.batchDelete(controller, (org.lumongo.cluster.message.Lumongo.BatchDeleteRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 4:
          this.fetch(controller, (org.lumongo.cluster.message.Lumongo.FetchRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 5:
          this.batchFetch(controller, (org.lumongo.cluster.message.Lumongo.BatchFetchRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 6:
          this.createIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexCreateRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 7:
          this.changeIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexSettingsRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 8:
          this.deleteIndex(controller, (org.lumongo.cluster.message.Lumongo.IndexDeleteRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 9:
          this.getIndexes(controller, (org.lumongo.cluster.message.Lumongo.GetIndexesRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 10:
          this.getNumberOfDocs(controller, (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 11:
          this.clear(controller, (org.lumongo.cluster.message.Lumongo.ClearRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 12:
          this.optimize(controller, (org.lumongo.cluster.message.Lumongo.OptimizeRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 13:
          this.getFieldNames(controller, (org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 14:
          this.getTerms(controller, (org.lumongo.cluster.message.Lumongo.GetTermsRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 15:
          this.getMembers(controller, (org.lumongo.cluster.message.Lumongo.GetMembersRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getRequestPrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getRequestPrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance();
        case 1:
          return org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance();
        case 2:
          return org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance();
        case 3:
          return org.lumongo.cluster.message.Lumongo.BatchDeleteRequest.getDefaultInstance();
        case 4:
          return org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance();
        case 5:
          return org.lumongo.cluster.message.Lumongo.BatchFetchRequest.getDefaultInstance();
        case 6:
          return org.lumongo.cluster.message.Lumongo.IndexCreateRequest.getDefaultInstance();
        case 7:
          return org.lumongo.cluster.message.Lumongo.IndexSettingsRequest.getDefaultInstance();
        case 8:
          return org.lumongo.cluster.message.Lumongo.IndexDeleteRequest.getDefaultInstance();
        case 9:
          return org.lumongo.cluster.message.Lumongo.GetIndexesRequest.getDefaultInstance();
        case 10:
          return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance();
        case 11:
          return org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance();
        case 12:
          return org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance();
        case 13:
          return org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance();
        case 14:
          return org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance();
        case 15:
          return org.lumongo.cluster.message.Lumongo.GetMembersRequest.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getResponsePrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getResponsePrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance();
        case 1:
          return org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance();
        case 2:
          return org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance();
        case 3:
          return org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance();
        case 4:
          return org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance();
        case 5:
          return org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance();
        case 6:
          return org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance();
        case 7:
          return org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance();
        case 8:
          return org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance();
        case 9:
          return org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance();
        case 10:
          return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance();
        case 11:
          return org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance();
        case 12:
          return org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance();
        case 13:
          return org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance();
        case 14:
          return org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance();
        case 15:
          return org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public static Stub newStub(
        com.google.protobuf.RpcChannel channel) {
      return new Stub(channel);
    }

    public static final class Stub extends org.lumongo.cluster.message.Lumongo.ExternalService implements Interface {
      private Stub(com.google.protobuf.RpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.RpcChannel channel;

      public com.google.protobuf.RpcChannel getChannel() {
        return channel;
      }

      public  void query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.QueryResponse.class,
            org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance()));
      }

      public  void store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.StoreResponse.class,
            org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance()));
      }

      public  void delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(2),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.DeleteResponse.class,
            org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance()));
      }

      public  void batchDelete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(3),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.class,
            org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance()));
      }

      public  void fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(4),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.FetchResponse.class,
            org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance()));
      }

      public  void batchFetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchFetchRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(5),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.BatchFetchResponse.class,
            org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance()));
      }

      public  void createIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexCreateRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(6),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.IndexCreateResponse.class,
            org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance()));
      }

      public  void changeIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(7),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.class,
            org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance()));
      }

      public  void deleteIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(8),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.class,
            org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance()));
      }

      public  void getIndexes(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetIndexesRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(9),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetIndexesResponse.class,
            org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance()));
      }

      public  void getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(10),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.class,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance()));
      }

      public  void clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(11),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.ClearResponse.class,
            org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance()));
      }

      public  void optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(12),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.OptimizeResponse.class,
            org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance()));
      }

      public  void getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(13),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.class,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance()));
      }

      public  void getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(14),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetTermsResponse.class,
            org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance()));
      }

      public  void getMembers(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetMembersRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(15),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetMembersResponse.class,
            org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance()));
      }
    }

    public static BlockingInterface newBlockingStub(
        com.google.protobuf.BlockingRpcChannel channel) {
      return new BlockingStub(channel);
    }

    public interface BlockingInterface {
      public org.lumongo.cluster.message.Lumongo.QueryResponse query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.StoreResponse store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.DeleteResponse delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.BatchDeleteResponse batchDelete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.FetchResponse fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.BatchFetchResponse batchFetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchFetchRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.IndexCreateResponse createIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexCreateRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.IndexSettingsResponse changeIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.IndexDeleteResponse deleteIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetIndexesResponse getIndexes(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetIndexesRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.ClearResponse clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.OptimizeResponse optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetTermsResponse getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetMembersResponse getMembers(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetMembersRequest request)
          throws com.google.protobuf.ServiceException;
    }

    private static final class BlockingStub implements BlockingInterface {
      private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.BlockingRpcChannel channel;

      public org.lumongo.cluster.message.Lumongo.QueryResponse query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.QueryResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.QueryResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.StoreResponse store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.StoreResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.DeleteResponse delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.DeleteResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(2),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.BatchDeleteResponse batchDelete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchDeleteRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.BatchDeleteResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(3),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.BatchDeleteResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.FetchResponse fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.FetchResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(4),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.BatchFetchResponse batchFetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.BatchFetchRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.BatchFetchResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(5),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.BatchFetchResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.IndexCreateResponse createIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexCreateRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.IndexCreateResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(6),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexCreateResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.IndexSettingsResponse changeIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexSettingsRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.IndexSettingsResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(7),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexSettingsResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.IndexDeleteResponse deleteIndex(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.IndexDeleteRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.IndexDeleteResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(8),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.IndexDeleteResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetIndexesResponse getIndexes(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetIndexesRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetIndexesResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(9),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetIndexesResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(10),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.ClearResponse clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.ClearResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(11),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.OptimizeResponse optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.OptimizeResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(12),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(13),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetTermsResponse getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetTermsResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(14),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetMembersResponse getMembers(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetMembersRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetMembersResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(15),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetMembersResponse.getDefaultInstance());
      }

    }

    // @@protoc_insertion_point(class_scope:ExternalService)
  }

  /**
   * Protobuf service {@code InternalService}
   */
  public static abstract class InternalService
      implements com.google.protobuf.Service {
    protected InternalService() {}

    public interface Interface {
      /**
       * rpc Query(.QueryRequest) returns (.InternalQueryResponse);
       */
      public abstract void query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Store(.StoreRequest) returns (.StoreResponse);
       */
      public abstract void store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Fetch(.FetchRequest) returns (.FetchResponse);
       */
      public abstract void fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Delete(.DeleteRequest) returns (.DeleteResponse);
       */
      public abstract void delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetNumberOfDocs(.GetNumberOfDocsRequest) returns (.GetNumberOfDocsResponse);
       */
      public abstract void getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Clear(.ClearRequest) returns (.ClearResponse);
       */
      public abstract void clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc Optimize(.OptimizeRequest) returns (.OptimizeResponse);
       */
      public abstract void optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetFieldNames(.GetFieldNamesRequest) returns (.GetFieldNamesResponse);
       */
      public abstract void getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
          com.google.protobuf.RpcCallback done);

      /**
       * rpc GetTerms(.GetTermsRequest) returns (.GetTermsResponse);
       */
      public abstract void getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
          com.google.protobuf.RpcCallback done);

    }

    public static com.google.protobuf.Service newReflectiveService(
        final Interface impl) {
      return new InternalService() {
        @java.lang.Override
        public  void query(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.QueryRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.query(controller, request, done);
        }

        @java.lang.Override
        public  void store(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.StoreRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.store(controller, request, done);
        }

        @java.lang.Override
        public  void fetch(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.FetchRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.fetch(controller, request, done);
        }

        @java.lang.Override
        public  void delete(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.DeleteRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.delete(controller, request, done);
        }

        @java.lang.Override
        public  void getNumberOfDocs(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getNumberOfDocs(controller, request, done);
        }

        @java.lang.Override
        public  void clear(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.ClearRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.clear(controller, request, done);
        }

        @java.lang.Override
        public  void optimize(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.optimize(controller, request, done);
        }

        @java.lang.Override
        public  void getFieldNames(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getFieldNames(controller, request, done);
        }

        @java.lang.Override
        public  void getTerms(
            com.google.protobuf.RpcController controller,
            org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
            com.google.protobuf.RpcCallback done) {
          impl.getTerms(controller, request, done);
        }

      };
    }

    public static com.google.protobuf.BlockingService
        newReflectiveBlockingService(final BlockingInterface impl) {
      return new com.google.protobuf.BlockingService() {
        public final com.google.protobuf.Descriptors.ServiceDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }

        public final com.google.protobuf.Message callBlockingMethod(
            com.google.protobuf.Descriptors.MethodDescriptor method,
            com.google.protobuf.RpcController controller,
            com.google.protobuf.Message request)
            throws com.google.protobuf.ServiceException {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.callBlockingMethod() given method descriptor for " +
              "wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return impl.query(controller, (org.lumongo.cluster.message.Lumongo.QueryRequest)request);
            case 1:
              return impl.store(controller, (org.lumongo.cluster.message.Lumongo.StoreRequest)request);
            case 2:
              return impl.fetch(controller, (org.lumongo.cluster.message.Lumongo.FetchRequest)request);
            case 3:
              return impl.delete(controller, (org.lumongo.cluster.message.Lumongo.DeleteRequest)request);
            case 4:
              return impl.getNumberOfDocs(controller, (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest)request);
            case 5:
              return impl.clear(controller, (org.lumongo.cluster.message.Lumongo.ClearRequest)request);
            case 6:
              return impl.optimize(controller, (org.lumongo.cluster.message.Lumongo.OptimizeRequest)request);
            case 7:
              return impl.getFieldNames(controller, (org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest)request);
            case 8:
              return impl.getTerms(controller, (org.lumongo.cluster.message.Lumongo.GetTermsRequest)request);
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getRequestPrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getRequestPrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance();
            case 1:
              return org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance();
            case 2:
              return org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance();
            case 3:
              return org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance();
            case 4:
              return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance();
            case 5:
              return org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance();
            case 6:
              return org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance();
            case 7:
              return org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance();
            case 8:
              return org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getResponsePrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getResponsePrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance();
            case 1:
              return org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance();
            case 2:
              return org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance();
            case 3:
              return org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance();
            case 4:
              return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance();
            case 5:
              return org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance();
            case 6:
              return org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance();
            case 7:
              return org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance();
            case 8:
              return org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

      };
    }

    /**
     * rpc Query(.QueryRequest) returns (.InternalQueryResponse);
     */
    public abstract void query(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.QueryRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Store(.StoreRequest) returns (.StoreResponse);
     */
    public abstract void store(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.StoreRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Fetch(.FetchRequest) returns (.FetchResponse);
     */
    public abstract void fetch(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.FetchRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Delete(.DeleteRequest) returns (.DeleteResponse);
     */
    public abstract void delete(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.DeleteRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetNumberOfDocs(.GetNumberOfDocsRequest) returns (.GetNumberOfDocsResponse);
     */
    public abstract void getNumberOfDocs(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Clear(.ClearRequest) returns (.ClearResponse);
     */
    public abstract void clear(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.ClearRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc Optimize(.OptimizeRequest) returns (.OptimizeResponse);
     */
    public abstract void optimize(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetFieldNames(.GetFieldNamesRequest) returns (.GetFieldNamesResponse);
     */
    public abstract void getFieldNames(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
        com.google.protobuf.RpcCallback done);

    /**
     * rpc GetTerms(.GetTermsRequest) returns (.GetTermsResponse);
     */
    public abstract void getTerms(
        com.google.protobuf.RpcController controller,
        org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
        com.google.protobuf.RpcCallback done);

    public static final
        com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptor() {
      return org.lumongo.cluster.message.Lumongo.getDescriptor().getServices().get(1);
    }
    public final com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }

    public final void callMethod(
        com.google.protobuf.Descriptors.MethodDescriptor method,
        com.google.protobuf.RpcController controller,
        com.google.protobuf.Message request,
        com.google.protobuf.RpcCallback<
          com.google.protobuf.Message> done) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.callMethod() given method descriptor for wrong " +
          "service type.");
      }
      switch(method.getIndex()) {
        case 0:
          this.query(controller, (org.lumongo.cluster.message.Lumongo.QueryRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 1:
          this.store(controller, (org.lumongo.cluster.message.Lumongo.StoreRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 2:
          this.fetch(controller, (org.lumongo.cluster.message.Lumongo.FetchRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 3:
          this.delete(controller, (org.lumongo.cluster.message.Lumongo.DeleteRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 4:
          this.getNumberOfDocs(controller, (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 5:
          this.clear(controller, (org.lumongo.cluster.message.Lumongo.ClearRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 6:
          this.optimize(controller, (org.lumongo.cluster.message.Lumongo.OptimizeRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 7:
          this.getFieldNames(controller, (org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        case 8:
          this.getTerms(controller, (org.lumongo.cluster.message.Lumongo.GetTermsRequest)request,
            com.google.protobuf.RpcUtil.specializeCallback(
              done));
          return;
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getRequestPrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getRequestPrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.lumongo.cluster.message.Lumongo.QueryRequest.getDefaultInstance();
        case 1:
          return org.lumongo.cluster.message.Lumongo.StoreRequest.getDefaultInstance();
        case 2:
          return org.lumongo.cluster.message.Lumongo.FetchRequest.getDefaultInstance();
        case 3:
          return org.lumongo.cluster.message.Lumongo.DeleteRequest.getDefaultInstance();
        case 4:
          return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest.getDefaultInstance();
        case 5:
          return org.lumongo.cluster.message.Lumongo.ClearRequest.getDefaultInstance();
        case 6:
          return org.lumongo.cluster.message.Lumongo.OptimizeRequest.getDefaultInstance();
        case 7:
          return org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest.getDefaultInstance();
        case 8:
          return org.lumongo.cluster.message.Lumongo.GetTermsRequest.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getResponsePrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getResponsePrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance();
        case 1:
          return org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance();
        case 2:
          return org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance();
        case 3:
          return org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance();
        case 4:
          return org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance();
        case 5:
          return org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance();
        case 6:
          return org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance();
        case 7:
          return org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance();
        case 8:
          return org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public static Stub newStub(
        com.google.protobuf.RpcChannel channel) {
      return new Stub(channel);
    }

    public static final class Stub extends org.lumongo.cluster.message.Lumongo.InternalService implements Interface {
      private Stub(com.google.protobuf.RpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.RpcChannel channel;

      public com.google.protobuf.RpcChannel getChannel() {
        return channel;
      }

      public  void query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.InternalQueryResponse.class,
            org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance()));
      }

      public  void store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.StoreResponse.class,
            org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance()));
      }

      public  void fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(2),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.FetchResponse.class,
            org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance()));
      }

      public  void delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(3),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.DeleteResponse.class,
            org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance()));
      }

      public  void getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(4),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.class,
            org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance()));
      }

      public  void clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(5),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.ClearResponse.class,
            org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance()));
      }

      public  void optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(6),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.OptimizeResponse.class,
            org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance()));
      }

      public  void getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(7),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.class,
            org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance()));
      }

      public  void getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request,
          com.google.protobuf.RpcCallback done) {
        channel.callMethod(
          getDescriptor().getMethods().get(8),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.lumongo.cluster.message.Lumongo.GetTermsResponse.class,
            org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance()));
      }
    }

    public static BlockingInterface newBlockingStub(
        com.google.protobuf.BlockingRpcChannel channel) {
      return new BlockingStub(channel);
    }

    public interface BlockingInterface {
      public org.lumongo.cluster.message.Lumongo.InternalQueryResponse query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.StoreResponse store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.FetchResponse fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.DeleteResponse delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.ClearResponse clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.OptimizeResponse optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request)
          throws com.google.protobuf.ServiceException;

      public org.lumongo.cluster.message.Lumongo.GetTermsResponse getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request)
          throws com.google.protobuf.ServiceException;
    }

    private static final class BlockingStub implements BlockingInterface {
      private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.BlockingRpcChannel channel;

      public org.lumongo.cluster.message.Lumongo.InternalQueryResponse query(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.QueryRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.InternalQueryResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.InternalQueryResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.StoreResponse store(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.StoreRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.StoreResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.StoreResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.FetchResponse fetch(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.FetchRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.FetchResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(2),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.FetchResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.DeleteResponse delete(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.DeleteRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.DeleteResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(3),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.DeleteResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse getNumberOfDocs(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(4),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetNumberOfDocsResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.ClearResponse clear(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.ClearRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.ClearResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(5),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.ClearResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.OptimizeResponse optimize(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.OptimizeRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.OptimizeResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(6),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.OptimizeResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse getFieldNames(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(7),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetFieldNamesResponse.getDefaultInstance());
      }


      public org.lumongo.cluster.message.Lumongo.GetTermsResponse getTerms(
          com.google.protobuf.RpcController controller,
          org.lumongo.cluster.message.Lumongo.GetTermsRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.lumongo.cluster.message.Lumongo.GetTermsResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(8),
          controller,
          request,
          org.lumongo.cluster.message.Lumongo.GetTermsResponse.getDefaultInstance());
      }

    }

    // @@protoc_insertion_point(class_scope:InternalService)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetMembersRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetMembersRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LMMember_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LMMember_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetMembersResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetMembersResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexMapping_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexMapping_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SegmentMapping_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SegmentMapping_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetTermsRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetTermsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetTermsResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetTermsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Term_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Term_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetFieldNamesRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetFieldNamesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetFieldNamesResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetFieldNamesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ClearRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ClearRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ClearResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ClearResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_OptimizeRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_OptimizeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_OptimizeResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_OptimizeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetIndexesRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetIndexesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetIndexesResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetIndexesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetNumberOfDocsRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetNumberOfDocsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_GetNumberOfDocsResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GetNumberOfDocsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SegmentCountResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SegmentCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexCreateRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexCreateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexCreateResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexCreateResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexSettingsRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexSettingsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexSettings_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexSettings_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FieldConfig_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FieldConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexAs_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexAs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FacetAs_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FacetAs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SortAs_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SortAs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexSettingsResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexSettingsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexDeleteRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexDeleteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexDeleteResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexDeleteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_StoreRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_StoreRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_StoreResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_StoreResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LMDoc_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LMDoc_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LMFacet_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LMFacet_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LMField_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LMField_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ResultDocument_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ResultDocument_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_AssociatedDocument_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_AssociatedDocument_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Metadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Metadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ScoredResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ScoredResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SortRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SortRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FieldSort_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FieldSort_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FacetGroup_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FacetGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FacetCount_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FacetCount_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FacetRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FacetRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CountRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SegmentResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SegmentResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LastIndexResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LastIndexResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_LastResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_LastResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_InternalQueryResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_InternalQueryResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_IndexSegmentResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_IndexSegmentResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_QueryRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_QueryRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_QueryResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_QueryResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DeleteRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_DeleteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DeleteResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_DeleteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BatchDeleteRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_BatchDeleteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BatchDeleteResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_BatchDeleteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BatchFetchRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_BatchFetchRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_BatchFetchResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_BatchFetchResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FetchRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FetchRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FetchResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_FetchResponse_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\rlumongo.proto\"\023\n\021GetMembersRequest\"v\n\010" +
      "LMMember\022\025\n\rserverAddress\030\001 \002(\t\022\024\n\014exter" +
      "nalPort\030\002 \002(\r\022\024\n\014internalPort\030\003 \001(\r\022\025\n\rh" +
      "azelcastPort\030\004 \001(\r\022\020\n\010restPort\030\005 \001(\r\"T\n\022" +
      "GetMembersResponse\022\031\n\006member\030\001 \003(\0132\t.LMM" +
      "ember\022#\n\014indexMapping\030\002 \003(\0132\r.IndexMappi" +
      "ng\"d\n\014IndexMapping\022\021\n\tindexName\030\001 \002(\t\022\030\n" +
      "\020numberOfSegments\030\002 \002(\r\022\'\n\016segmentMappin" +
      "g\030\003 \003(\0132\017.SegmentMapping\"B\n\016SegmentMappi" +
      "ng\022\025\n\rsegmentNumber\030\001 \002(\r\022\031\n\006member\030\002 \002(",
      "\0132\t.LMMember\"\263\001\n\017GetTermsRequest\022\021\n\tinde" +
      "xName\030\001 \002(\t\022\021\n\tfieldName\030\002 \002(\t\022\016\n\006amount" +
      "\030\003 \002(\r\022\024\n\014startingTerm\030\004 \001(\t\022\025\n\nminDocFr" +
      "eq\030\005 \001(\r:\0011\022\026\n\010realTime\030\006 \001(\010:\004true\022\022\n\nt" +
      "ermFilter\030\007 \001(\t\022\021\n\ttermMatch\030\010 \001(\t\"@\n\020Ge" +
      "tTermsResponse\022\023\n\004term\030\001 \003(\0132\005.Term\022\027\n\010l" +
      "astTerm\030\002 \001(\0132\005.Term\"&\n\004Term\022\r\n\005value\030\001 " +
      "\002(\t\022\017\n\007docFreq\030\002 \001(\004\")\n\024GetFieldNamesReq" +
      "uest\022\021\n\tindexName\030\001 \002(\t\"*\n\025GetFieldNames" +
      "Response\022\021\n\tfieldName\030\001 \003(\t\"!\n\014ClearRequ",
      "est\022\021\n\tindexName\030\001 \002(\t\"\017\n\rClearResponse\"" +
      "$\n\017OptimizeRequest\022\021\n\tindexName\030\001 \002(\t\"\022\n" +
      "\020OptimizeResponse\"\023\n\021GetIndexesRequest\"\'" +
      "\n\022GetIndexesResponse\022\021\n\tindexName\030\001 \003(\t\"" +
      "C\n\026GetNumberOfDocsRequest\022\021\n\tindexName\030\001" +
      " \002(\t\022\026\n\010realTime\030\002 \001(\010:\004true\"d\n\027GetNumbe" +
      "rOfDocsResponse\022\024\n\014numberOfDocs\030\001 \002(\004\0223\n" +
      "\024segmentCountResponse\030\002 \003(\0132\025.SegmentCou" +
      "ntResponse\"C\n\024SegmentCountResponse\022\025\n\rse" +
      "gmentNumber\030\001 \002(\r\022\024\n\014numberOfDocs\030\002 \002(\r\"",
      "\177\n\022IndexCreateRequest\022\021\n\tindexName\030\001 \002(\t" +
      "\022\025\n\runiqueIdField\030\002 \002(\t\022\030\n\020numberOfSegme" +
      "nts\030\003 \002(\r\022%\n\rindexSettings\030\004 \002(\0132\016.Index" +
      "Settings\"\025\n\023IndexCreateResponse\"P\n\024Index" +
      "SettingsRequest\022\021\n\tindexName\030\001 \002(\t\022%\n\rin" +
      "dexSettings\030\004 \002(\0132\016.IndexSettings\"\253\003\n\rIn" +
      "dexSettings\022\032\n\022defaultSearchField\030\001 \002(\t\022" +
      "!\n\013fieldConfig\030\002 \003(\0132\014.FieldConfig\022%\n\027ap" +
      "plyUncommittedDeletes\030\003 \001(\010:\004true\022\030\n\rreq" +
      "uestFactor\030\004 \001(\001:\0012\022\034\n\021minSegmentRequest",
      "\030\005 \001(\r:\0012\022!\n\025idleTimeWithoutCommit\030\006 \001(\r" +
      ":\00230\022#\n\025segmentCommitInterval\030\007 \001(\r:\004320" +
      "0\022\036\n\020segmentTolerance\030\t \001(\001:\0040.05\022\"\n\025seg" +
      "mentQueryCacheSize\030\013 \001(\r:\003512\022\'\n\032segment" +
      "QueryCacheMaxAmount\030\014 \001(\r:\003256\022#\n\024storeD" +
      "ocumentInIndex\030\r \001(\010:\005false\022\"\n\024storeDocu" +
      "mentInMongo\030\016 \001(\010:\004true\"u\n\013FieldConfig\022\027" +
      "\n\017storedFieldName\030\001 \002(\t\022\031\n\007indexAs\030\002 \003(\013" +
      "2\010.IndexAs\022\031\n\007facetAs\030\003 \003(\0132\010.FacetAs\022\027\n" +
      "\006sortAs\030\004 \001(\0132\007.SortAs\"@\n\007IndexAs\022\026\n\016ind",
      "exFieldName\030\001 \002(\t\022\035\n\010analyzer\030\002 \002(\0162\013.LM" +
      "Analyzer\"\212\001\n\007FacetAs\022\021\n\tfacetName\030\001 \002(\t\022" +
      "\'\n\tfacetType\030\002 \002(\0162\024.FacetAs.LMFacetType" +
      "\"C\n\013LMFacetType\022\014\n\010STANDARD\020\001\022\023\n\017DATE_YY" +
      "YY_MM_DD\020\002\022\021\n\rDATE_YYYYMMDD\020\003\"\257\001\n\006SortAs" +
      "\022\025\n\rsortFieldName\030\001 \002(\t\022\"\n\010sortType\030\002 \002(" +
      "\0162\020.SortAs.SortType\"j\n\010SortType\022\n\n\006STRIN" +
      "G\020\001\022\017\n\013NUMERIC_INT\020\002\022\020\n\014NUMERIC_LONG\020\003\022\021" +
      "\n\rNUMERIC_FLOAT\020\004\022\022\n\016NUMERIC_DOUBLE\020\005\022\010\n" +
      "\004DATE\020\006\"\027\n\025IndexSettingsResponse\"\'\n\022Inde",
      "xDeleteRequest\022\021\n\tindexName\030\001 \002(\t\"\025\n\023Ind" +
      "exDeleteResponse\"\265\001\n\014StoreRequest\022\020\n\010uni" +
      "queId\030\001 \002(\t\022\021\n\tindexName\030\002 \002(\t\022\'\n\016result" +
      "Document\030\003 \001(\0132\017.ResultDocument\022/\n\022assoc" +
      "iatedDocument\030\004 \003(\0132\023.AssociatedDocument" +
      "\022&\n\027clearExistingAssociated\030\005 \001(\010:\005false" +
      "\"\017\n\rStoreResponse\"S\n\005LMDoc\022\036\n\014indexedFie" +
      "ld\030\001 \003(\0132\010.LMField\022\027\n\005facet\030\002 \003(\0132\010.LMFa" +
      "cet\022\021\n\ttimestamp\030\003 \001(\003\"&\n\007LMFacet\022\r\n\005lab" +
      "el\030\001 \002(\t\022\014\n\004path\030\002 \001(\t\"~\n\007LMField\022\021\n\tfie",
      "ldName\030\001 \002(\t\022\022\n\nfieldValue\030\002 \003(\t\022\020\n\010intV" +
      "alue\030\003 \003(\005\022\021\n\tlongValue\030\004 \003(\003\022\022\n\nfloatVa" +
      "lue\030\005 \003(\002\022\023\n\013doubleValue\030\006 \003(\001\"w\n\016Result" +
      "Document\022\020\n\010uniqueId\030\001 \002(\t\022\021\n\tindexName\030" +
      "\002 \002(\t\022\020\n\010document\030\003 \001(\014\022\033\n\010metadata\030\004 \003(" +
      "\0132\t.Metadata\022\021\n\ttimestamp\030\005 \001(\003\"\260\001\n\022Asso" +
      "ciatedDocument\022\020\n\010filename\030\001 \002(\t\022\030\n\020docu" +
      "mentUniqueId\030\002 \002(\t\022\021\n\tindexName\030\003 \002(\t\022\020\n" +
      "\010document\030\004 \001(\014\022\031\n\ncompressed\030\005 \001(\010:\005fal" +
      "se\022\033\n\010metadata\030\006 \003(\0132\t.Metadata\022\021\n\ttimes",
      "tamp\030\007 \001(\003\"&\n\010Metadata\022\013\n\003key\030\001 \002(\t\022\r\n\005v" +
      "alue\030\002 \002(\t\"\245\002\n\014ScoredResult\022\020\n\010uniqueId\030" +
      "\001 \002(\t\022\r\n\005score\030\002 \002(\002\022\r\n\005docId\030\003 \002(\r\022\021\n\ti" +
      "ndexName\030\004 \002(\t\022\017\n\007segment\030\005 \002(\r\022\023\n\013resul" +
      "tIndex\030\006 \002(\r\022\020\n\010sortTerm\030\007 \003(\t\022\023\n\013sortIn" +
      "teger\030\010 \003(\005\022\020\n\010sortLong\030\t \003(\003\022\021\n\tsortFlo" +
      "at\030\n \003(\002\022\022\n\nsortDouble\030\013 \003(\001\022\020\n\010sortDate" +
      "\030\014 \003(\003\022\021\n\ttimestamp\030\r \002(\003\022\'\n\016resultDocum" +
      "ent\030\016 \001(\0132\017.ResultDocument\",\n\013SortReques" +
      "t\022\035\n\tfieldSort\030\001 \003(\0132\n.FieldSort\"~\n\tFiel",
      "dSort\022\021\n\tsortField\030\001 \002(\t\0222\n\tdirection\030\002 " +
      "\001(\0162\024.FieldSort.Direction:\tASCENDING\"*\n\t" +
      "Direction\022\r\n\tASCENDING\020\001\022\016\n\nDESCENDING\020\002" +
      "\"\226\001\n\nFacetGroup\022#\n\014countRequest\030\001 \002(\0132\r." +
      "CountRequest\022\037\n\nfacetCount\030\002 \003(\0132\013.Facet" +
      "Count\022\036\n\017possibleMissing\030\003 \001(\010:\005false\022\"\n" +
      "\027maxValuePossibleMissing\030\004 \001(\004:\0010\"<\n\nFac" +
      "etCount\022\r\n\005facet\030\001 \002(\t\022\r\n\005count\030\002 \002(\004\022\020\n" +
      "\010maxError\030\003 \001(\004\"P\n\014FacetRequest\022#\n\014count" +
      "Request\030\001 \003(\0132\r.CountRequest\022\033\n\tdrillDow",
      "n\030\002 \003(\0132\010.LMFacet\"\233\001\n\014CountRequest\022\034\n\nfa" +
      "cetField\030\001 \002(\0132\010.LMFacet\022\025\n\tmaxFacets\030\002 " +
      "\001(\r:\00210\022\025\n\rsegmentFacets\030\003 \001(\r\022\032\n\014comput" +
      "eError\030\004 \001(\010:\004true\022#\n\025computePossibleMis" +
      "sed\030\005 \001(\010:\004true\"\261\001\n\017SegmentResponse\022\025\n\rs" +
      "egmentNumber\030\001 \002(\r\022\021\n\tindexName\030\002 \002(\t\022\021\n" +
      "\ttotalHits\030\003 \002(\r\022#\n\014scoredResult\030\004 \003(\0132\r" +
      ".ScoredResult\022\033\n\004next\030\005 \001(\0132\r.ScoredResu" +
      "lt\022\037\n\nfacetGroup\030\006 \003(\0132\013.FacetGroup\"K\n\017L" +
      "astIndexResult\022\021\n\tindexName\030\001 \002(\t\022%\n\016las",
      "tForSegment\030\002 \003(\0132\r.ScoredResult\"7\n\nLast" +
      "Result\022)\n\017lastIndexResult\030\001 \003(\0132\020.LastIn" +
      "dexResult\"L\n\025InternalQueryResponse\0223\n\024in" +
      "dexSegmentResponse\030\001 \003(\0132\025.IndexSegmentR" +
      "esponse\"S\n\024IndexSegmentResponse\022\021\n\tindex" +
      "Name\030\001 \002(\t\022(\n\016segmentReponse\030\002 \003(\0132\020.Seg" +
      "mentResponse\"\320\003\n\014QueryRequest\022\r\n\005index\030\001" +
      " \003(\t\022\r\n\005query\030\002 \001(\t\022\016\n\006amount\030\003 \002(\r\022\037\n\nl" +
      "astResult\030\004 \001(\0132\013.LastResult\022\030\n\tfetchFul" +
      "l\030\005 \001(\010:\005false\022#\n\014facetRequest\030\007 \001(\0132\r.F",
      "acetRequest\022!\n\013sortRequest\030\010 \001(\0132\014.SortR" +
      "equest\022\022\n\nqueryField\030\t \003(\t\022\023\n\013filterQuer" +
      "y\030\n \003(\t\022\016\n\006fields\030\013 \003(\t\022)\n\017resultFetchTy" +
      "pe\030\014 \001(\0162\n.FetchType:\004NONE\022#\n\030minimumNum" +
      "berShouldMatch\030\r \001(\r:\0010\0223\n\017defaultOperat" +
      "or\030\016 \001(\0162\026.QueryRequest.Operator:\002OR\022\026\n\016" +
      "documentFields\030\017 \003(\t\022\034\n\024documentMaskedFi" +
      "elds\030\020 \003(\t\"\033\n\010Operator\022\007\n\003AND\020\001\022\006\n\002OR\020\002\"" +
      "\204\001\n\rQueryResponse\022\021\n\ttotalHits\030\001 \002(\004\022\036\n\007" +
      "results\030\002 \003(\0132\r.ScoredResult\022\037\n\nlastResu",
      "lt\030\003 \002(\0132\013.LastResult\022\037\n\nfacetGroup\030\004 \003(" +
      "\0132\013.FacetGroup\"\207\001\n\rDeleteRequest\022\021\n\tinde" +
      "xName\030\001 \002(\t\022\020\n\010uniqueId\030\002 \002(\t\022\020\n\010filenam" +
      "e\030\003 \001(\t\022\034\n\016deleteDocument\030\004 \001(\010:\004true\022!\n" +
      "\023deleteAllAssociated\030\005 \001(\010:\004true\"\020\n\016Dele" +
      "teResponse\"5\n\022BatchDeleteRequest\022\037\n\007requ" +
      "est\030\001 \003(\0132\016.DeleteRequest\"\025\n\023BatchDelete" +
      "Response\"8\n\021BatchFetchRequest\022#\n\014fetchRe" +
      "quest\030\001 \003(\0132\r.FetchRequest\";\n\022BatchFetch" +
      "Response\022%\n\rfetchResponse\030\001 \003(\0132\016.FetchR",
      "esponse\"\350\001\n\014FetchRequest\022\020\n\010uniqueId\030\001 \002" +
      "(\t\022\021\n\tindexName\030\002 \002(\t\022\020\n\010fileName\030\003 \001(\t\022" +
      ")\n\017resultFetchType\030\004 \001(\0162\n.FetchType:\004FU" +
      "LL\022-\n\023associatedFetchType\030\005 \001(\0162\n.FetchT" +
      "ype:\004META\022\026\n\016documentFields\030\006 \003(\t\022\034\n\024doc" +
      "umentMaskedFields\030\007 \003(\t\022\021\n\ttimestamp\030\010 \001" +
      "(\003\"i\n\rFetchResponse\022\'\n\016resultDocument\030\001 " +
      "\001(\0132\017.ResultDocument\022/\n\022associatedDocume" +
      "nt\030\002 \003(\0132\023.AssociatedDocument*\370\001\n\nLMAnal" +
      "yzer\022\013\n\007KEYWORD\020\001\022\016\n\nLC_KEYWORD\020\002\022\016\n\nWHI",
      "TESPACE\020\003\022\021\n\rLC_WHITESPACE\020\004\022\014\n\010STANDARD" +
      "\020\005\022\017\n\013NUMERIC_INT\020\006\022\020\n\014NUMERIC_LONG\020\007\022\021\n" +
      "\rNUMERIC_FLOAT\020\010\022\022\n\016NUMERIC_DOUBLE\020\t\022\024\n\020" +
      "STANDARD_FOLDING\020\n\022\024\n\020STANDARD_NO_STOP\020\013" +
      "\022\034\n\030STANDARD_FOLDING_NO_STOP\020\014\022\010\n\004DATE\020\r" +
      "*)\n\tFetchType\022\010\n\004FULL\020\001\022\010\n\004META\020\002\022\010\n\004NON" +
      "E\020\0032\325\006\n\017ExternalService\022&\n\005Query\022\r.Query" +
      "Request\032\016.QueryResponse\022&\n\005Store\022\r.Store" +
      "Request\032\016.StoreResponse\022)\n\006Delete\022\016.Dele" +
      "teRequest\032\017.DeleteResponse\0228\n\013BatchDelet",
      "e\022\023.BatchDeleteRequest\032\024.BatchDeleteResp" +
      "onse\022&\n\005Fetch\022\r.FetchRequest\032\016.FetchResp" +
      "onse\0225\n\nBatchFetch\022\022.BatchFetchRequest\032\023" +
      ".BatchFetchResponse\0228\n\013CreateIndex\022\023.Ind" +
      "exCreateRequest\032\024.IndexCreateResponse\022<\n" +
      "\013ChangeIndex\022\025.IndexSettingsRequest\032\026.In" +
      "dexSettingsResponse\0228\n\013DeleteIndex\022\023.Ind" +
      "exDeleteRequest\032\024.IndexDeleteResponse\0225\n" +
      "\nGetIndexes\022\022.GetIndexesRequest\032\023.GetInd" +
      "exesResponse\022D\n\017GetNumberOfDocs\022\027.GetNum",
      "berOfDocsRequest\032\030.GetNumberOfDocsRespon" +
      "se\022&\n\005Clear\022\r.ClearRequest\032\016.ClearRespon" +
      "se\022/\n\010Optimize\022\020.OptimizeRequest\032\021.Optim" +
      "izeResponse\022>\n\rGetFieldNames\022\025.GetFieldN" +
      "amesRequest\032\026.GetFieldNamesResponse\022/\n\010G" +
      "etTerms\022\020.GetTermsRequest\032\021.GetTermsResp" +
      "onse\0225\n\nGetMembers\022\022.GetMembersRequest\032\023" +
      ".GetMembersResponse2\314\003\n\017InternalService\022" +
      ".\n\005Query\022\r.QueryRequest\032\026.InternalQueryR" +
      "esponse\022&\n\005Store\022\r.StoreRequest\032\016.StoreR",
      "esponse\022&\n\005Fetch\022\r.FetchRequest\032\016.FetchR" +
      "esponse\022)\n\006Delete\022\016.DeleteRequest\032\017.Dele" +
      "teResponse\022D\n\017GetNumberOfDocs\022\027.GetNumbe" +
      "rOfDocsRequest\032\030.GetNumberOfDocsResponse" +
      "\022&\n\005Clear\022\r.ClearRequest\032\016.ClearResponse" +
      "\022/\n\010Optimize\022\020.OptimizeRequest\032\021.Optimiz" +
      "eResponse\022>\n\rGetFieldNames\022\025.GetFieldNam" +
      "esRequest\032\026.GetFieldNamesResponse\022/\n\010Get" +
      "Terms\022\020.GetTermsRequest\032\021.GetTermsRespon" +
      "seB \n\033org.lumongo.cluster.message\210\001\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_GetMembersRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_GetMembersRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetMembersRequest_descriptor,
        new java.lang.String[] { });
    internal_static_LMMember_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_LMMember_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LMMember_descriptor,
        new java.lang.String[] { "ServerAddress", "ExternalPort", "InternalPort", "HazelcastPort", "RestPort", });
    internal_static_GetMembersResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_GetMembersResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetMembersResponse_descriptor,
        new java.lang.String[] { "Member", "IndexMapping", });
    internal_static_IndexMapping_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_IndexMapping_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexMapping_descriptor,
        new java.lang.String[] { "IndexName", "NumberOfSegments", "SegmentMapping", });
    internal_static_SegmentMapping_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_SegmentMapping_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_SegmentMapping_descriptor,
        new java.lang.String[] { "SegmentNumber", "Member", });
    internal_static_GetTermsRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_GetTermsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetTermsRequest_descriptor,
        new java.lang.String[] { "IndexName", "FieldName", "Amount", "StartingTerm", "MinDocFreq", "RealTime", "TermFilter", "TermMatch", });
    internal_static_GetTermsResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_GetTermsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetTermsResponse_descriptor,
        new java.lang.String[] { "Term", "LastTerm", });
    internal_static_Term_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_Term_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_Term_descriptor,
        new java.lang.String[] { "Value", "DocFreq", });
    internal_static_GetFieldNamesRequest_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_GetFieldNamesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetFieldNamesRequest_descriptor,
        new java.lang.String[] { "IndexName", });
    internal_static_GetFieldNamesResponse_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_GetFieldNamesResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetFieldNamesResponse_descriptor,
        new java.lang.String[] { "FieldName", });
    internal_static_ClearRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_ClearRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_ClearRequest_descriptor,
        new java.lang.String[] { "IndexName", });
    internal_static_ClearResponse_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_ClearResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_ClearResponse_descriptor,
        new java.lang.String[] { });
    internal_static_OptimizeRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_OptimizeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_OptimizeRequest_descriptor,
        new java.lang.String[] { "IndexName", });
    internal_static_OptimizeResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_OptimizeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_OptimizeResponse_descriptor,
        new java.lang.String[] { });
    internal_static_GetIndexesRequest_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_GetIndexesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetIndexesRequest_descriptor,
        new java.lang.String[] { });
    internal_static_GetIndexesResponse_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_GetIndexesResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetIndexesResponse_descriptor,
        new java.lang.String[] { "IndexName", });
    internal_static_GetNumberOfDocsRequest_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_GetNumberOfDocsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetNumberOfDocsRequest_descriptor,
        new java.lang.String[] { "IndexName", "RealTime", });
    internal_static_GetNumberOfDocsResponse_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_GetNumberOfDocsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_GetNumberOfDocsResponse_descriptor,
        new java.lang.String[] { "NumberOfDocs", "SegmentCountResponse", });
    internal_static_SegmentCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_SegmentCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_SegmentCountResponse_descriptor,
        new java.lang.String[] { "SegmentNumber", "NumberOfDocs", });
    internal_static_IndexCreateRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_IndexCreateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexCreateRequest_descriptor,
        new java.lang.String[] { "IndexName", "UniqueIdField", "NumberOfSegments", "IndexSettings", });
    internal_static_IndexCreateResponse_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_IndexCreateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexCreateResponse_descriptor,
        new java.lang.String[] { });
    internal_static_IndexSettingsRequest_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_IndexSettingsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexSettingsRequest_descriptor,
        new java.lang.String[] { "IndexName", "IndexSettings", });
    internal_static_IndexSettings_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_IndexSettings_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexSettings_descriptor,
        new java.lang.String[] { "DefaultSearchField", "FieldConfig", "ApplyUncommittedDeletes", "RequestFactor", "MinSegmentRequest", "IdleTimeWithoutCommit", "SegmentCommitInterval", "SegmentTolerance", "SegmentQueryCacheSize", "SegmentQueryCacheMaxAmount", "StoreDocumentInIndex", "StoreDocumentInMongo", });
    internal_static_FieldConfig_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_FieldConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FieldConfig_descriptor,
        new java.lang.String[] { "StoredFieldName", "IndexAs", "FacetAs", "SortAs", });
    internal_static_IndexAs_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_IndexAs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexAs_descriptor,
        new java.lang.String[] { "IndexFieldName", "Analyzer", });
    internal_static_FacetAs_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_FacetAs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FacetAs_descriptor,
        new java.lang.String[] { "FacetName", "FacetType", });
    internal_static_SortAs_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_SortAs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_SortAs_descriptor,
        new java.lang.String[] { "SortFieldName", "SortType", });
    internal_static_IndexSettingsResponse_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_IndexSettingsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexSettingsResponse_descriptor,
        new java.lang.String[] { });
    internal_static_IndexDeleteRequest_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_IndexDeleteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexDeleteRequest_descriptor,
        new java.lang.String[] { "IndexName", });
    internal_static_IndexDeleteResponse_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_IndexDeleteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexDeleteResponse_descriptor,
        new java.lang.String[] { });
    internal_static_StoreRequest_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_StoreRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_StoreRequest_descriptor,
        new java.lang.String[] { "UniqueId", "IndexName", "ResultDocument", "AssociatedDocument", "ClearExistingAssociated", });
    internal_static_StoreResponse_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_StoreResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_StoreResponse_descriptor,
        new java.lang.String[] { });
    internal_static_LMDoc_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_LMDoc_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LMDoc_descriptor,
        new java.lang.String[] { "IndexedField", "Facet", "Timestamp", });
    internal_static_LMFacet_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_LMFacet_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LMFacet_descriptor,
        new java.lang.String[] { "Label", "Path", });
    internal_static_LMField_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_LMField_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LMField_descriptor,
        new java.lang.String[] { "FieldName", "FieldValue", "IntValue", "LongValue", "FloatValue", "DoubleValue", });
    internal_static_ResultDocument_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_ResultDocument_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_ResultDocument_descriptor,
        new java.lang.String[] { "UniqueId", "IndexName", "Document", "Metadata", "Timestamp", });
    internal_static_AssociatedDocument_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_AssociatedDocument_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_AssociatedDocument_descriptor,
        new java.lang.String[] { "Filename", "DocumentUniqueId", "IndexName", "Document", "Compressed", "Metadata", "Timestamp", });
    internal_static_Metadata_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_Metadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_Metadata_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_ScoredResult_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_ScoredResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_ScoredResult_descriptor,
        new java.lang.String[] { "UniqueId", "Score", "DocId", "IndexName", "Segment", "ResultIndex", "SortTerm", "SortInteger", "SortLong", "SortFloat", "SortDouble", "SortDate", "Timestamp", "ResultDocument", });
    internal_static_SortRequest_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_SortRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_SortRequest_descriptor,
        new java.lang.String[] { "FieldSort", });
    internal_static_FieldSort_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_FieldSort_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FieldSort_descriptor,
        new java.lang.String[] { "SortField", "Direction", });
    internal_static_FacetGroup_descriptor =
      getDescriptor().getMessageTypes().get(41);
    internal_static_FacetGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FacetGroup_descriptor,
        new java.lang.String[] { "CountRequest", "FacetCount", "PossibleMissing", "MaxValuePossibleMissing", });
    internal_static_FacetCount_descriptor =
      getDescriptor().getMessageTypes().get(42);
    internal_static_FacetCount_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FacetCount_descriptor,
        new java.lang.String[] { "Facet", "Count", "MaxError", });
    internal_static_FacetRequest_descriptor =
      getDescriptor().getMessageTypes().get(43);
    internal_static_FacetRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FacetRequest_descriptor,
        new java.lang.String[] { "CountRequest", "DrillDown", });
    internal_static_CountRequest_descriptor =
      getDescriptor().getMessageTypes().get(44);
    internal_static_CountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CountRequest_descriptor,
        new java.lang.String[] { "FacetField", "MaxFacets", "SegmentFacets", "ComputeError", "ComputePossibleMissed", });
    internal_static_SegmentResponse_descriptor =
      getDescriptor().getMessageTypes().get(45);
    internal_static_SegmentResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_SegmentResponse_descriptor,
        new java.lang.String[] { "SegmentNumber", "IndexName", "TotalHits", "ScoredResult", "Next", "FacetGroup", });
    internal_static_LastIndexResult_descriptor =
      getDescriptor().getMessageTypes().get(46);
    internal_static_LastIndexResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LastIndexResult_descriptor,
        new java.lang.String[] { "IndexName", "LastForSegment", });
    internal_static_LastResult_descriptor =
      getDescriptor().getMessageTypes().get(47);
    internal_static_LastResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_LastResult_descriptor,
        new java.lang.String[] { "LastIndexResult", });
    internal_static_InternalQueryResponse_descriptor =
      getDescriptor().getMessageTypes().get(48);
    internal_static_InternalQueryResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_InternalQueryResponse_descriptor,
        new java.lang.String[] { "IndexSegmentResponse", });
    internal_static_IndexSegmentResponse_descriptor =
      getDescriptor().getMessageTypes().get(49);
    internal_static_IndexSegmentResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_IndexSegmentResponse_descriptor,
        new java.lang.String[] { "IndexName", "SegmentReponse", });
    internal_static_QueryRequest_descriptor =
      getDescriptor().getMessageTypes().get(50);
    internal_static_QueryRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_QueryRequest_descriptor,
        new java.lang.String[] { "Index", "Query", "Amount", "LastResult", "FetchFull", "FacetRequest", "SortRequest", "QueryField", "FilterQuery", "Fields", "ResultFetchType", "MinimumNumberShouldMatch", "DefaultOperator", "DocumentFields", "DocumentMaskedFields", });
    internal_static_QueryResponse_descriptor =
      getDescriptor().getMessageTypes().get(51);
    internal_static_QueryResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_QueryResponse_descriptor,
        new java.lang.String[] { "TotalHits", "Results", "LastResult", "FacetGroup", });
    internal_static_DeleteRequest_descriptor =
      getDescriptor().getMessageTypes().get(52);
    internal_static_DeleteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_DeleteRequest_descriptor,
        new java.lang.String[] { "IndexName", "UniqueId", "Filename", "DeleteDocument", "DeleteAllAssociated", });
    internal_static_DeleteResponse_descriptor =
      getDescriptor().getMessageTypes().get(53);
    internal_static_DeleteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_DeleteResponse_descriptor,
        new java.lang.String[] { });
    internal_static_BatchDeleteRequest_descriptor =
      getDescriptor().getMessageTypes().get(54);
    internal_static_BatchDeleteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_BatchDeleteRequest_descriptor,
        new java.lang.String[] { "Request", });
    internal_static_BatchDeleteResponse_descriptor =
      getDescriptor().getMessageTypes().get(55);
    internal_static_BatchDeleteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_BatchDeleteResponse_descriptor,
        new java.lang.String[] { });
    internal_static_BatchFetchRequest_descriptor =
      getDescriptor().getMessageTypes().get(56);
    internal_static_BatchFetchRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_BatchFetchRequest_descriptor,
        new java.lang.String[] { "FetchRequest", });
    internal_static_BatchFetchResponse_descriptor =
      getDescriptor().getMessageTypes().get(57);
    internal_static_BatchFetchResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_BatchFetchResponse_descriptor,
        new java.lang.String[] { "FetchResponse", });
    internal_static_FetchRequest_descriptor =
      getDescriptor().getMessageTypes().get(58);
    internal_static_FetchRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FetchRequest_descriptor,
        new java.lang.String[] { "UniqueId", "IndexName", "FileName", "ResultFetchType", "AssociatedFetchType", "DocumentFields", "DocumentMaskedFields", "Timestamp", });
    internal_static_FetchResponse_descriptor =
      getDescriptor().getMessageTypes().get(59);
    internal_static_FetchResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_FetchResponse_descriptor,
        new java.lang.String[] { "ResultDocument", "AssociatedDocument", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy