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

package textkeymatcher.io;

public final class Persistent {
  private Persistent() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface LineDataOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string key = 1;
    boolean hasKey();
    String getKey();
    
    // required string value = 2;
    boolean hasValue();
    String getValue();
  }
  public static final class LineData extends
      com.google.protobuf.GeneratedMessage
      implements LineDataOrBuilder {
    // Use LineData.newBuilder() to construct.
    private LineData(Builder builder) {
      super(builder);
    }
    private LineData(boolean noInit) {}
    
    private static final LineData defaultInstance;
    public static LineData getDefaultInstance() {
      return defaultInstance;
    }
    
    public LineData getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineData_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineData_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string key = 1;
    public static final int KEY_FIELD_NUMBER = 1;
    private java.lang.Object key_;
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          key_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required string value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((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 isInitialized == 1;
      
      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 textkeymatcher.io.Persistent.LineData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.LineData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(textkeymatcher.io.Persistent.LineData 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements textkeymatcher.io.Persistent.LineDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineData_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineData_fieldAccessorTable;
      }
      
      // Construct using textkeymatcher.io.Persistent.LineData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(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 textkeymatcher.io.Persistent.LineData.getDescriptor();
      }
      
      public textkeymatcher.io.Persistent.LineData getDefaultInstanceForType() {
        return textkeymatcher.io.Persistent.LineData.getDefaultInstance();
      }
      
      public textkeymatcher.io.Persistent.LineData build() {
        textkeymatcher.io.Persistent.LineData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private textkeymatcher.io.Persistent.LineData buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        textkeymatcher.io.Persistent.LineData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public textkeymatcher.io.Persistent.LineData buildPartial() {
        textkeymatcher.io.Persistent.LineData result = new textkeymatcher.io.Persistent.LineData(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 textkeymatcher.io.Persistent.LineData) {
          return mergeFrom((textkeymatcher.io.Persistent.LineData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(textkeymatcher.io.Persistent.LineData other) {
        if (other == textkeymatcher.io.Persistent.LineData.getDefaultInstance()) return this;
        if (other.hasKey()) {
          setKey(other.getKey());
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        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 {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              key_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string key = 1;
      private java.lang.Object key_ = "";
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setKey(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      void setKey(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
      }
      
      // required string value = 2;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:textkeymatcher.LineData)
    }
    
    static {
      defaultInstance = new LineData(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:textkeymatcher.LineData)
  }
  
  public interface LineDataListOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional string title = 1;
    boolean hasTitle();
    String getTitle();
    
    // repeated .textkeymatcher.LineData lineDatas = 2;
    java.util.List<textkeymatcher.io.Persistent.LineData> 
        getLineDatasList();
    textkeymatcher.io.Persistent.LineData getLineDatas(int index);
    int getLineDatasCount();
    java.util.List<? extends textkeymatcher.io.Persistent.LineDataOrBuilder> 
        getLineDatasOrBuilderList();
    textkeymatcher.io.Persistent.LineDataOrBuilder getLineDatasOrBuilder(
        int index);
  }
  public static final class LineDataList extends
      com.google.protobuf.GeneratedMessage
      implements LineDataListOrBuilder {
    // Use LineDataList.newBuilder() to construct.
    private LineDataList(Builder builder) {
      super(builder);
    }
    private LineDataList(boolean noInit) {}
    
    private static final LineDataList defaultInstance;
    public static LineDataList getDefaultInstance() {
      return defaultInstance;
    }
    
    public LineDataList getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineDataList_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineDataList_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional string title = 1;
    public static final int TITLE_FIELD_NUMBER = 1;
    private java.lang.Object title_;
    public boolean hasTitle() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getTitle() {
      java.lang.Object ref = title_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          title_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getTitleBytes() {
      java.lang.Object ref = title_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        title_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // repeated .textkeymatcher.LineData lineDatas = 2;
    public static final int LINEDATAS_FIELD_NUMBER = 2;
    private java.util.List<textkeymatcher.io.Persistent.LineData> lineDatas_;
    public java.util.List<textkeymatcher.io.Persistent.LineData> getLineDatasList() {
      return lineDatas_;
    }
    public java.util.List<? extends textkeymatcher.io.Persistent.LineDataOrBuilder> 
        getLineDatasOrBuilderList() {
      return lineDatas_;
    }
    public int getLineDatasCount() {
      return lineDatas_.size();
    }
    public textkeymatcher.io.Persistent.LineData getLineDatas(int index) {
      return lineDatas_.get(index);
    }
    public textkeymatcher.io.Persistent.LineDataOrBuilder getLineDatasOrBuilder(
        int index) {
      return lineDatas_.get(index);
    }
    
    private void initFields() {
      title_ = "";
      lineDatas_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      for (int i = 0; i < getLineDatasCount(); i++) {
        if (!getLineDatas(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, getTitleBytes());
      }
      for (int i = 0; i < lineDatas_.size(); i++) {
        output.writeMessage(2, lineDatas_.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, getTitleBytes());
      }
      for (int i = 0; i < lineDatas_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, lineDatas_.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 textkeymatcher.io.Persistent.LineDataList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.LineDataList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.LineDataList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(textkeymatcher.io.Persistent.LineDataList 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements textkeymatcher.io.Persistent.LineDataListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineDataList_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_LineDataList_fieldAccessorTable;
      }
      
      // Construct using textkeymatcher.io.Persistent.LineDataList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLineDatasFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        title_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (lineDatasBuilder_ == null) {
          lineDatas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          lineDatasBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return textkeymatcher.io.Persistent.LineDataList.getDescriptor();
      }
      
      public textkeymatcher.io.Persistent.LineDataList getDefaultInstanceForType() {
        return textkeymatcher.io.Persistent.LineDataList.getDefaultInstance();
      }
      
      public textkeymatcher.io.Persistent.LineDataList build() {
        textkeymatcher.io.Persistent.LineDataList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private textkeymatcher.io.Persistent.LineDataList buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        textkeymatcher.io.Persistent.LineDataList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public textkeymatcher.io.Persistent.LineDataList buildPartial() {
        textkeymatcher.io.Persistent.LineDataList result = new textkeymatcher.io.Persistent.LineDataList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.title_ = title_;
        if (lineDatasBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            lineDatas_ = java.util.Collections.unmodifiableList(lineDatas_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.lineDatas_ = lineDatas_;
        } else {
          result.lineDatas_ = lineDatasBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof textkeymatcher.io.Persistent.LineDataList) {
          return mergeFrom((textkeymatcher.io.Persistent.LineDataList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(textkeymatcher.io.Persistent.LineDataList other) {
        if (other == textkeymatcher.io.Persistent.LineDataList.getDefaultInstance()) return this;
        if (other.hasTitle()) {
          setTitle(other.getTitle());
        }
        if (lineDatasBuilder_ == null) {
          if (!other.lineDatas_.isEmpty()) {
            if (lineDatas_.isEmpty()) {
              lineDatas_ = other.lineDatas_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLineDatasIsMutable();
              lineDatas_.addAll(other.lineDatas_);
            }
            onChanged();
          }
        } else {
          if (!other.lineDatas_.isEmpty()) {
            if (lineDatasBuilder_.isEmpty()) {
              lineDatasBuilder_.dispose();
              lineDatasBuilder_ = null;
              lineDatas_ = other.lineDatas_;
              bitField0_ = (bitField0_ & ~0x00000002);
              lineDatasBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLineDatasFieldBuilder() : null;
            } else {
              lineDatasBuilder_.addAllMessages(other.lineDatas_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getLineDatasCount(); i++) {
          if (!getLineDatas(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              title_ = input.readBytes();
              break;
            }
            case 18: {
              textkeymatcher.io.Persistent.LineData.Builder subBuilder = textkeymatcher.io.Persistent.LineData.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addLineDatas(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional string title = 1;
      private java.lang.Object title_ = "";
      public boolean hasTitle() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTitle() {
        java.lang.Object ref = title_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          title_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setTitle(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        title_ = value;
        onChanged();
        return this;
      }
      public Builder clearTitle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        title_ = getDefaultInstance().getTitle();
        onChanged();
        return this;
      }
      void setTitle(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        title_ = value;
        onChanged();
      }
      
      // repeated .textkeymatcher.LineData lineDatas = 2;
      private java.util.List<textkeymatcher.io.Persistent.LineData> lineDatas_ =
        java.util.Collections.emptyList();
      private void ensureLineDatasIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          lineDatas_ = new java.util.ArrayList<textkeymatcher.io.Persistent.LineData>(lineDatas_);
          bitField0_ |= 0x00000002;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          textkeymatcher.io.Persistent.LineData, textkeymatcher.io.Persistent.LineData.Builder, textkeymatcher.io.Persistent.LineDataOrBuilder> lineDatasBuilder_;
      
      public java.util.List<textkeymatcher.io.Persistent.LineData> getLineDatasList() {
        if (lineDatasBuilder_ == null) {
          return java.util.Collections.unmodifiableList(lineDatas_);
        } else {
          return lineDatasBuilder_.getMessageList();
        }
      }
      public int getLineDatasCount() {
        if (lineDatasBuilder_ == null) {
          return lineDatas_.size();
        } else {
          return lineDatasBuilder_.getCount();
        }
      }
      public textkeymatcher.io.Persistent.LineData getLineDatas(int index) {
        if (lineDatasBuilder_ == null) {
          return lineDatas_.get(index);
        } else {
          return lineDatasBuilder_.getMessage(index);
        }
      }
      public Builder setLineDatas(
          int index, textkeymatcher.io.Persistent.LineData value) {
        if (lineDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLineDatasIsMutable();
          lineDatas_.set(index, value);
          onChanged();
        } else {
          lineDatasBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setLineDatas(
          int index, textkeymatcher.io.Persistent.LineData.Builder builderForValue) {
        if (lineDatasBuilder_ == null) {
          ensureLineDatasIsMutable();
          lineDatas_.set(index, builderForValue.build());
          onChanged();
        } else {
          lineDatasBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addLineDatas(textkeymatcher.io.Persistent.LineData value) {
        if (lineDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLineDatasIsMutable();
          lineDatas_.add(value);
          onChanged();
        } else {
          lineDatasBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addLineDatas(
          int index, textkeymatcher.io.Persistent.LineData value) {
        if (lineDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLineDatasIsMutable();
          lineDatas_.add(index, value);
          onChanged();
        } else {
          lineDatasBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addLineDatas(
          textkeymatcher.io.Persistent.LineData.Builder builderForValue) {
        if (lineDatasBuilder_ == null) {
          ensureLineDatasIsMutable();
          lineDatas_.add(builderForValue.build());
          onChanged();
        } else {
          lineDatasBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addLineDatas(
          int index, textkeymatcher.io.Persistent.LineData.Builder builderForValue) {
        if (lineDatasBuilder_ == null) {
          ensureLineDatasIsMutable();
          lineDatas_.add(index, builderForValue.build());
          onChanged();
        } else {
          lineDatasBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllLineDatas(
          java.lang.Iterable<? extends textkeymatcher.io.Persistent.LineData> values) {
        if (lineDatasBuilder_ == null) {
          ensureLineDatasIsMutable();
          super.addAll(values, lineDatas_);
          onChanged();
        } else {
          lineDatasBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearLineDatas() {
        if (lineDatasBuilder_ == null) {
          lineDatas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          lineDatasBuilder_.clear();
        }
        return this;
      }
      public Builder removeLineDatas(int index) {
        if (lineDatasBuilder_ == null) {
          ensureLineDatasIsMutable();
          lineDatas_.remove(index);
          onChanged();
        } else {
          lineDatasBuilder_.remove(index);
        }
        return this;
      }
      public textkeymatcher.io.Persistent.LineData.Builder getLineDatasBuilder(
          int index) {
        return getLineDatasFieldBuilder().getBuilder(index);
      }
      public textkeymatcher.io.Persistent.LineDataOrBuilder getLineDatasOrBuilder(
          int index) {
        if (lineDatasBuilder_ == null) {
          return lineDatas_.get(index);  } else {
          return lineDatasBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends textkeymatcher.io.Persistent.LineDataOrBuilder> 
           getLineDatasOrBuilderList() {
        if (lineDatasBuilder_ != null) {
          return lineDatasBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(lineDatas_);
        }
      }
      public textkeymatcher.io.Persistent.LineData.Builder addLineDatasBuilder() {
        return getLineDatasFieldBuilder().addBuilder(
            textkeymatcher.io.Persistent.LineData.getDefaultInstance());
      }
      public textkeymatcher.io.Persistent.LineData.Builder addLineDatasBuilder(
          int index) {
        return getLineDatasFieldBuilder().addBuilder(
            index, textkeymatcher.io.Persistent.LineData.getDefaultInstance());
      }
      public java.util.List<textkeymatcher.io.Persistent.LineData.Builder> 
           getLineDatasBuilderList() {
        return getLineDatasFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          textkeymatcher.io.Persistent.LineData, textkeymatcher.io.Persistent.LineData.Builder, textkeymatcher.io.Persistent.LineDataOrBuilder> 
          getLineDatasFieldBuilder() {
        if (lineDatasBuilder_ == null) {
          lineDatasBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              textkeymatcher.io.Persistent.LineData, textkeymatcher.io.Persistent.LineData.Builder, textkeymatcher.io.Persistent.LineDataOrBuilder>(
                  lineDatas_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          lineDatas_ = null;
        }
        return lineDatasBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:textkeymatcher.LineDataList)
    }
    
    static {
      defaultInstance = new LineDataList(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:textkeymatcher.LineDataList)
  }
  
  public interface RowMapOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .textkeymatcher.RowMap.KeyMatcherType keyMatcherType = 1;
    boolean hasKeyMatcherType();
    textkeymatcher.io.Persistent.RowMap.KeyMatcherType getKeyMatcherType();
    
    // repeated .textkeymatcher.LineDataList datas = 2;
    java.util.List<textkeymatcher.io.Persistent.LineDataList> 
        getDatasList();
    textkeymatcher.io.Persistent.LineDataList getDatas(int index);
    int getDatasCount();
    java.util.List<? extends textkeymatcher.io.Persistent.LineDataListOrBuilder> 
        getDatasOrBuilderList();
    textkeymatcher.io.Persistent.LineDataListOrBuilder getDatasOrBuilder(
        int index);
  }
  public static final class RowMap extends
      com.google.protobuf.GeneratedMessage
      implements RowMapOrBuilder {
    // Use RowMap.newBuilder() to construct.
    private RowMap(Builder builder) {
      super(builder);
    }
    private RowMap(boolean noInit) {}
    
    private static final RowMap defaultInstance;
    public static RowMap getDefaultInstance() {
      return defaultInstance;
    }
    
    public RowMap getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowMap_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowMap_fieldAccessorTable;
    }
    
    public enum KeyMatcherType
        implements com.google.protobuf.ProtocolMessageEnum {
      TEXT(0, 0),
      TEXT_IGNORE_CASE(1, 1),
      NUMERIC(2, 2),
      ;
      
      public static final int TEXT_VALUE = 0;
      public static final int TEXT_IGNORE_CASE_VALUE = 1;
      public static final int NUMERIC_VALUE = 2;
      
      
      public final int getNumber() { return value; }
      
      public static KeyMatcherType valueOf(int value) {
        switch (value) {
          case 0: return TEXT;
          case 1: return TEXT_IGNORE_CASE;
          case 2: return NUMERIC;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<KeyMatcherType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<KeyMatcherType>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<KeyMatcherType>() {
              public KeyMatcherType findValueByNumber(int number) {
                return KeyMatcherType.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 textkeymatcher.io.Persistent.RowMap.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final KeyMatcherType[] VALUES = {
        TEXT, TEXT_IGNORE_CASE, NUMERIC, 
      };
      
      public static KeyMatcherType 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 KeyMatcherType(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      // @@protoc_insertion_point(enum_scope:textkeymatcher.RowMap.KeyMatcherType)
    }
    
    private int bitField0_;
    // required .textkeymatcher.RowMap.KeyMatcherType keyMatcherType = 1;
    public static final int KEYMATCHERTYPE_FIELD_NUMBER = 1;
    private textkeymatcher.io.Persistent.RowMap.KeyMatcherType keyMatcherType_;
    public boolean hasKeyMatcherType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public textkeymatcher.io.Persistent.RowMap.KeyMatcherType getKeyMatcherType() {
      return keyMatcherType_;
    }
    
    // repeated .textkeymatcher.LineDataList datas = 2;
    public static final int DATAS_FIELD_NUMBER = 2;
    private java.util.List<textkeymatcher.io.Persistent.LineDataList> datas_;
    public java.util.List<textkeymatcher.io.Persistent.LineDataList> getDatasList() {
      return datas_;
    }
    public java.util.List<? extends textkeymatcher.io.Persistent.LineDataListOrBuilder> 
        getDatasOrBuilderList() {
      return datas_;
    }
    public int getDatasCount() {
      return datas_.size();
    }
    public textkeymatcher.io.Persistent.LineDataList getDatas(int index) {
      return datas_.get(index);
    }
    public textkeymatcher.io.Persistent.LineDataListOrBuilder getDatasOrBuilder(
        int index) {
      return datas_.get(index);
    }
    
    private void initFields() {
      keyMatcherType_ = textkeymatcher.io.Persistent.RowMap.KeyMatcherType.TEXT;
      datas_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasKeyMatcherType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getDatasCount(); i++) {
        if (!getDatas(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.writeEnum(1, keyMatcherType_.getNumber());
      }
      for (int i = 0; i < datas_.size(); i++) {
        output.writeMessage(2, datas_.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
          .computeEnumSize(1, keyMatcherType_.getNumber());
      }
      for (int i = 0; i < datas_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, datas_.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 textkeymatcher.io.Persistent.RowMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.RowMap parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowMap parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(textkeymatcher.io.Persistent.RowMap 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements textkeymatcher.io.Persistent.RowMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowMap_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowMap_fieldAccessorTable;
      }
      
      // Construct using textkeymatcher.io.Persistent.RowMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDatasFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        keyMatcherType_ = textkeymatcher.io.Persistent.RowMap.KeyMatcherType.TEXT;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (datasBuilder_ == null) {
          datas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          datasBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return textkeymatcher.io.Persistent.RowMap.getDescriptor();
      }
      
      public textkeymatcher.io.Persistent.RowMap getDefaultInstanceForType() {
        return textkeymatcher.io.Persistent.RowMap.getDefaultInstance();
      }
      
      public textkeymatcher.io.Persistent.RowMap build() {
        textkeymatcher.io.Persistent.RowMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private textkeymatcher.io.Persistent.RowMap buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        textkeymatcher.io.Persistent.RowMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public textkeymatcher.io.Persistent.RowMap buildPartial() {
        textkeymatcher.io.Persistent.RowMap result = new textkeymatcher.io.Persistent.RowMap(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.keyMatcherType_ = keyMatcherType_;
        if (datasBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            datas_ = java.util.Collections.unmodifiableList(datas_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.datas_ = datas_;
        } else {
          result.datas_ = datasBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof textkeymatcher.io.Persistent.RowMap) {
          return mergeFrom((textkeymatcher.io.Persistent.RowMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(textkeymatcher.io.Persistent.RowMap other) {
        if (other == textkeymatcher.io.Persistent.RowMap.getDefaultInstance()) return this;
        if (other.hasKeyMatcherType()) {
          setKeyMatcherType(other.getKeyMatcherType());
        }
        if (datasBuilder_ == null) {
          if (!other.datas_.isEmpty()) {
            if (datas_.isEmpty()) {
              datas_ = other.datas_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDatasIsMutable();
              datas_.addAll(other.datas_);
            }
            onChanged();
          }
        } else {
          if (!other.datas_.isEmpty()) {
            if (datasBuilder_.isEmpty()) {
              datasBuilder_.dispose();
              datasBuilder_ = null;
              datas_ = other.datas_;
              bitField0_ = (bitField0_ & ~0x00000002);
              datasBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getDatasFieldBuilder() : null;
            } else {
              datasBuilder_.addAllMessages(other.datas_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasKeyMatcherType()) {
          
          return false;
        }
        for (int i = 0; i < getDatasCount(); i++) {
          if (!getDatas(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              textkeymatcher.io.Persistent.RowMap.KeyMatcherType value = textkeymatcher.io.Persistent.RowMap.KeyMatcherType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                keyMatcherType_ = value;
              }
              break;
            }
            case 18: {
              textkeymatcher.io.Persistent.LineDataList.Builder subBuilder = textkeymatcher.io.Persistent.LineDataList.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addDatas(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .textkeymatcher.RowMap.KeyMatcherType keyMatcherType = 1;
      private textkeymatcher.io.Persistent.RowMap.KeyMatcherType keyMatcherType_ = textkeymatcher.io.Persistent.RowMap.KeyMatcherType.TEXT;
      public boolean hasKeyMatcherType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public textkeymatcher.io.Persistent.RowMap.KeyMatcherType getKeyMatcherType() {
        return keyMatcherType_;
      }
      public Builder setKeyMatcherType(textkeymatcher.io.Persistent.RowMap.KeyMatcherType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        keyMatcherType_ = value;
        onChanged();
        return this;
      }
      public Builder clearKeyMatcherType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        keyMatcherType_ = textkeymatcher.io.Persistent.RowMap.KeyMatcherType.TEXT;
        onChanged();
        return this;
      }
      
      // repeated .textkeymatcher.LineDataList datas = 2;
      private java.util.List<textkeymatcher.io.Persistent.LineDataList> datas_ =
        java.util.Collections.emptyList();
      private void ensureDatasIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          datas_ = new java.util.ArrayList<textkeymatcher.io.Persistent.LineDataList>(datas_);
          bitField0_ |= 0x00000002;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          textkeymatcher.io.Persistent.LineDataList, textkeymatcher.io.Persistent.LineDataList.Builder, textkeymatcher.io.Persistent.LineDataListOrBuilder> datasBuilder_;
      
      public java.util.List<textkeymatcher.io.Persistent.LineDataList> getDatasList() {
        if (datasBuilder_ == null) {
          return java.util.Collections.unmodifiableList(datas_);
        } else {
          return datasBuilder_.getMessageList();
        }
      }
      public int getDatasCount() {
        if (datasBuilder_ == null) {
          return datas_.size();
        } else {
          return datasBuilder_.getCount();
        }
      }
      public textkeymatcher.io.Persistent.LineDataList getDatas(int index) {
        if (datasBuilder_ == null) {
          return datas_.get(index);
        } else {
          return datasBuilder_.getMessage(index);
        }
      }
      public Builder setDatas(
          int index, textkeymatcher.io.Persistent.LineDataList value) {
        if (datasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasIsMutable();
          datas_.set(index, value);
          onChanged();
        } else {
          datasBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setDatas(
          int index, textkeymatcher.io.Persistent.LineDataList.Builder builderForValue) {
        if (datasBuilder_ == null) {
          ensureDatasIsMutable();
          datas_.set(index, builderForValue.build());
          onChanged();
        } else {
          datasBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addDatas(textkeymatcher.io.Persistent.LineDataList value) {
        if (datasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasIsMutable();
          datas_.add(value);
          onChanged();
        } else {
          datasBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addDatas(
          int index, textkeymatcher.io.Persistent.LineDataList value) {
        if (datasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasIsMutable();
          datas_.add(index, value);
          onChanged();
        } else {
          datasBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addDatas(
          textkeymatcher.io.Persistent.LineDataList.Builder builderForValue) {
        if (datasBuilder_ == null) {
          ensureDatasIsMutable();
          datas_.add(builderForValue.build());
          onChanged();
        } else {
          datasBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addDatas(
          int index, textkeymatcher.io.Persistent.LineDataList.Builder builderForValue) {
        if (datasBuilder_ == null) {
          ensureDatasIsMutable();
          datas_.add(index, builderForValue.build());
          onChanged();
        } else {
          datasBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllDatas(
          java.lang.Iterable<? extends textkeymatcher.io.Persistent.LineDataList> values) {
        if (datasBuilder_ == null) {
          ensureDatasIsMutable();
          super.addAll(values, datas_);
          onChanged();
        } else {
          datasBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearDatas() {
        if (datasBuilder_ == null) {
          datas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          datasBuilder_.clear();
        }
        return this;
      }
      public Builder removeDatas(int index) {
        if (datasBuilder_ == null) {
          ensureDatasIsMutable();
          datas_.remove(index);
          onChanged();
        } else {
          datasBuilder_.remove(index);
        }
        return this;
      }
      public textkeymatcher.io.Persistent.LineDataList.Builder getDatasBuilder(
          int index) {
        return getDatasFieldBuilder().getBuilder(index);
      }
      public textkeymatcher.io.Persistent.LineDataListOrBuilder getDatasOrBuilder(
          int index) {
        if (datasBuilder_ == null) {
          return datas_.get(index);  } else {
          return datasBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends textkeymatcher.io.Persistent.LineDataListOrBuilder> 
           getDatasOrBuilderList() {
        if (datasBuilder_ != null) {
          return datasBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(datas_);
        }
      }
      public textkeymatcher.io.Persistent.LineDataList.Builder addDatasBuilder() {
        return getDatasFieldBuilder().addBuilder(
            textkeymatcher.io.Persistent.LineDataList.getDefaultInstance());
      }
      public textkeymatcher.io.Persistent.LineDataList.Builder addDatasBuilder(
          int index) {
        return getDatasFieldBuilder().addBuilder(
            index, textkeymatcher.io.Persistent.LineDataList.getDefaultInstance());
      }
      public java.util.List<textkeymatcher.io.Persistent.LineDataList.Builder> 
           getDatasBuilderList() {
        return getDatasFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          textkeymatcher.io.Persistent.LineDataList, textkeymatcher.io.Persistent.LineDataList.Builder, textkeymatcher.io.Persistent.LineDataListOrBuilder> 
          getDatasFieldBuilder() {
        if (datasBuilder_ == null) {
          datasBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              textkeymatcher.io.Persistent.LineDataList, textkeymatcher.io.Persistent.LineDataList.Builder, textkeymatcher.io.Persistent.LineDataListOrBuilder>(
                  datas_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          datas_ = null;
        }
        return datasBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:textkeymatcher.RowMap)
    }
    
    static {
      defaultInstance = new RowMap(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:textkeymatcher.RowMap)
  }
  
  public interface RowViewOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .textkeymatcher.RowView.FilterType filterType = 1;
    boolean hasFilterType();
    textkeymatcher.io.Persistent.RowView.FilterType getFilterType();
  }
  public static final class RowView extends
      com.google.protobuf.GeneratedMessage
      implements RowViewOrBuilder {
    // Use RowView.newBuilder() to construct.
    private RowView(Builder builder) {
      super(builder);
    }
    private RowView(boolean noInit) {}
    
    private static final RowView defaultInstance;
    public static RowView getDefaultInstance() {
      return defaultInstance;
    }
    
    public RowView getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowView_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowView_fieldAccessorTable;
    }
    
    public enum FilterType
        implements com.google.protobuf.ProtocolMessageEnum {
      ALL(0, 0),
      MATCHED(1, 1),
      UNMATCHED(2, 2),
      EXISTS_FIRST_COLUMN(3, 3),
      MISSING_FIRST_COLUMN(4, 4),
      ;
      
      public static final int ALL_VALUE = 0;
      public static final int MATCHED_VALUE = 1;
      public static final int UNMATCHED_VALUE = 2;
      public static final int EXISTS_FIRST_COLUMN_VALUE = 3;
      public static final int MISSING_FIRST_COLUMN_VALUE = 4;
      
      
      public final int getNumber() { return value; }
      
      public static FilterType valueOf(int value) {
        switch (value) {
          case 0: return ALL;
          case 1: return MATCHED;
          case 2: return UNMATCHED;
          case 3: return EXISTS_FIRST_COLUMN;
          case 4: return MISSING_FIRST_COLUMN;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<FilterType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<FilterType>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<FilterType>() {
              public FilterType findValueByNumber(int number) {
                return FilterType.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 textkeymatcher.io.Persistent.RowView.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final FilterType[] VALUES = {
        ALL, MATCHED, UNMATCHED, EXISTS_FIRST_COLUMN, MISSING_FIRST_COLUMN, 
      };
      
      public static FilterType 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 FilterType(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      // @@protoc_insertion_point(enum_scope:textkeymatcher.RowView.FilterType)
    }
    
    private int bitField0_;
    // required .textkeymatcher.RowView.FilterType filterType = 1;
    public static final int FILTERTYPE_FIELD_NUMBER = 1;
    private textkeymatcher.io.Persistent.RowView.FilterType filterType_;
    public boolean hasFilterType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public textkeymatcher.io.Persistent.RowView.FilterType getFilterType() {
      return filterType_;
    }
    
    private void initFields() {
      filterType_ = textkeymatcher.io.Persistent.RowView.FilterType.ALL;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasFilterType()) {
        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.writeEnum(1, filterType_.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
          .computeEnumSize(1, filterType_.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 textkeymatcher.io.Persistent.RowView parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.RowView parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.RowView parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(textkeymatcher.io.Persistent.RowView 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements textkeymatcher.io.Persistent.RowViewOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowView_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_RowView_fieldAccessorTable;
      }
      
      // Construct using textkeymatcher.io.Persistent.RowView.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(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();
        filterType_ = textkeymatcher.io.Persistent.RowView.FilterType.ALL;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return textkeymatcher.io.Persistent.RowView.getDescriptor();
      }
      
      public textkeymatcher.io.Persistent.RowView getDefaultInstanceForType() {
        return textkeymatcher.io.Persistent.RowView.getDefaultInstance();
      }
      
      public textkeymatcher.io.Persistent.RowView build() {
        textkeymatcher.io.Persistent.RowView result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private textkeymatcher.io.Persistent.RowView buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        textkeymatcher.io.Persistent.RowView result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public textkeymatcher.io.Persistent.RowView buildPartial() {
        textkeymatcher.io.Persistent.RowView result = new textkeymatcher.io.Persistent.RowView(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.filterType_ = filterType_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof textkeymatcher.io.Persistent.RowView) {
          return mergeFrom((textkeymatcher.io.Persistent.RowView)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(textkeymatcher.io.Persistent.RowView other) {
        if (other == textkeymatcher.io.Persistent.RowView.getDefaultInstance()) return this;
        if (other.hasFilterType()) {
          setFilterType(other.getFilterType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasFilterType()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              textkeymatcher.io.Persistent.RowView.FilterType value = textkeymatcher.io.Persistent.RowView.FilterType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                filterType_ = value;
              }
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .textkeymatcher.RowView.FilterType filterType = 1;
      private textkeymatcher.io.Persistent.RowView.FilterType filterType_ = textkeymatcher.io.Persistent.RowView.FilterType.ALL;
      public boolean hasFilterType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public textkeymatcher.io.Persistent.RowView.FilterType getFilterType() {
        return filterType_;
      }
      public Builder setFilterType(textkeymatcher.io.Persistent.RowView.FilterType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        filterType_ = value;
        onChanged();
        return this;
      }
      public Builder clearFilterType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filterType_ = textkeymatcher.io.Persistent.RowView.FilterType.ALL;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:textkeymatcher.RowView)
    }
    
    static {
      defaultInstance = new RowView(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:textkeymatcher.RowView)
  }
  
  public interface TextKeyMatcherDocOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .textkeymatcher.RowMap rowMap = 1;
    boolean hasRowMap();
    textkeymatcher.io.Persistent.RowMap getRowMap();
    textkeymatcher.io.Persistent.RowMapOrBuilder getRowMapOrBuilder();
    
    // required .textkeymatcher.RowView rowView = 2;
    boolean hasRowView();
    textkeymatcher.io.Persistent.RowView getRowView();
    textkeymatcher.io.Persistent.RowViewOrBuilder getRowViewOrBuilder();
    
    // optional string creationDate = 3;
    boolean hasCreationDate();
    String getCreationDate();
  }
  public static final class TextKeyMatcherDoc extends
      com.google.protobuf.GeneratedMessage
      implements TextKeyMatcherDocOrBuilder {
    // Use TextKeyMatcherDoc.newBuilder() to construct.
    private TextKeyMatcherDoc(Builder builder) {
      super(builder);
    }
    private TextKeyMatcherDoc(boolean noInit) {}
    
    private static final TextKeyMatcherDoc defaultInstance;
    public static TextKeyMatcherDoc getDefaultInstance() {
      return defaultInstance;
    }
    
    public TextKeyMatcherDoc getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_TextKeyMatcherDoc_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return textkeymatcher.io.Persistent.internal_static_textkeymatcher_TextKeyMatcherDoc_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .textkeymatcher.RowMap rowMap = 1;
    public static final int ROWMAP_FIELD_NUMBER = 1;
    private textkeymatcher.io.Persistent.RowMap rowMap_;
    public boolean hasRowMap() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public textkeymatcher.io.Persistent.RowMap getRowMap() {
      return rowMap_;
    }
    public textkeymatcher.io.Persistent.RowMapOrBuilder getRowMapOrBuilder() {
      return rowMap_;
    }
    
    // required .textkeymatcher.RowView rowView = 2;
    public static final int ROWVIEW_FIELD_NUMBER = 2;
    private textkeymatcher.io.Persistent.RowView rowView_;
    public boolean hasRowView() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public textkeymatcher.io.Persistent.RowView getRowView() {
      return rowView_;
    }
    public textkeymatcher.io.Persistent.RowViewOrBuilder getRowViewOrBuilder() {
      return rowView_;
    }
    
    // optional string creationDate = 3;
    public static final int CREATIONDATE_FIELD_NUMBER = 3;
    private java.lang.Object creationDate_;
    public boolean hasCreationDate() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public String getCreationDate() {
      java.lang.Object ref = creationDate_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          creationDate_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getCreationDateBytes() {
      java.lang.Object ref = creationDate_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        creationDate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      rowMap_ = textkeymatcher.io.Persistent.RowMap.getDefaultInstance();
      rowView_ = textkeymatcher.io.Persistent.RowView.getDefaultInstance();
      creationDate_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasRowMap()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRowView()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRowMap().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRowView().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, rowMap_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, rowView_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getCreationDateBytes());
      }
      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, rowMap_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, rowView_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getCreationDateBytes());
      }
      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 textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static textkeymatcher.io.Persistent.TextKeyMatcherDoc parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(textkeymatcher.io.Persistent.TextKeyMatcherDoc 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements textkeymatcher.io.Persistent.TextKeyMatcherDocOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_TextKeyMatcherDoc_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return textkeymatcher.io.Persistent.internal_static_textkeymatcher_TextKeyMatcherDoc_fieldAccessorTable;
      }
      
      // Construct using textkeymatcher.io.Persistent.TextKeyMatcherDoc.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getRowMapFieldBuilder();
          getRowViewFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (rowMapBuilder_ == null) {
          rowMap_ = textkeymatcher.io.Persistent.RowMap.getDefaultInstance();
        } else {
          rowMapBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (rowViewBuilder_ == null) {
          rowView_ = textkeymatcher.io.Persistent.RowView.getDefaultInstance();
        } else {
          rowViewBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        creationDate_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return textkeymatcher.io.Persistent.TextKeyMatcherDoc.getDescriptor();
      }
      
      public textkeymatcher.io.Persistent.TextKeyMatcherDoc getDefaultInstanceForType() {
        return textkeymatcher.io.Persistent.TextKeyMatcherDoc.getDefaultInstance();
      }
      
      public textkeymatcher.io.Persistent.TextKeyMatcherDoc build() {
        textkeymatcher.io.Persistent.TextKeyMatcherDoc result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private textkeymatcher.io.Persistent.TextKeyMatcherDoc buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        textkeymatcher.io.Persistent.TextKeyMatcherDoc result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public textkeymatcher.io.Persistent.TextKeyMatcherDoc buildPartial() {
        textkeymatcher.io.Persistent.TextKeyMatcherDoc result = new textkeymatcher.io.Persistent.TextKeyMatcherDoc(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (rowMapBuilder_ == null) {
          result.rowMap_ = rowMap_;
        } else {
          result.rowMap_ = rowMapBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (rowViewBuilder_ == null) {
          result.rowView_ = rowView_;
        } else {
          result.rowView_ = rowViewBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.creationDate_ = creationDate_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof textkeymatcher.io.Persistent.TextKeyMatcherDoc) {
          return mergeFrom((textkeymatcher.io.Persistent.TextKeyMatcherDoc)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(textkeymatcher.io.Persistent.TextKeyMatcherDoc other) {
        if (other == textkeymatcher.io.Persistent.TextKeyMatcherDoc.getDefaultInstance()) return this;
        if (other.hasRowMap()) {
          mergeRowMap(other.getRowMap());
        }
        if (other.hasRowView()) {
          mergeRowView(other.getRowView());
        }
        if (other.hasCreationDate()) {
          setCreationDate(other.getCreationDate());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasRowMap()) {
          
          return false;
        }
        if (!hasRowView()) {
          
          return false;
        }
        if (!getRowMap().isInitialized()) {
          
          return false;
        }
        if (!getRowView().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              textkeymatcher.io.Persistent.RowMap.Builder subBuilder = textkeymatcher.io.Persistent.RowMap.newBuilder();
              if (hasRowMap()) {
                subBuilder.mergeFrom(getRowMap());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setRowMap(subBuilder.buildPartial());
              break;
            }
            case 18: {
              textkeymatcher.io.Persistent.RowView.Builder subBuilder = textkeymatcher.io.Persistent.RowView.newBuilder();
              if (hasRowView()) {
                subBuilder.mergeFrom(getRowView());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setRowView(subBuilder.buildPartial());
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              creationDate_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .textkeymatcher.RowMap rowMap = 1;
      private textkeymatcher.io.Persistent.RowMap rowMap_ = textkeymatcher.io.Persistent.RowMap.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          textkeymatcher.io.Persistent.RowMap, textkeymatcher.io.Persistent.RowMap.Builder, textkeymatcher.io.Persistent.RowMapOrBuilder> rowMapBuilder_;
      public boolean hasRowMap() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public textkeymatcher.io.Persistent.RowMap getRowMap() {
        if (rowMapBuilder_ == null) {
          return rowMap_;
        } else {
          return rowMapBuilder_.getMessage();
        }
      }
      public Builder setRowMap(textkeymatcher.io.Persistent.RowMap value) {
        if (rowMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rowMap_ = value;
          onChanged();
        } else {
          rowMapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setRowMap(
          textkeymatcher.io.Persistent.RowMap.Builder builderForValue) {
        if (rowMapBuilder_ == null) {
          rowMap_ = builderForValue.build();
          onChanged();
        } else {
          rowMapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeRowMap(textkeymatcher.io.Persistent.RowMap value) {
        if (rowMapBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              rowMap_ != textkeymatcher.io.Persistent.RowMap.getDefaultInstance()) {
            rowMap_ =
              textkeymatcher.io.Persistent.RowMap.newBuilder(rowMap_).mergeFrom(value).buildPartial();
          } else {
            rowMap_ = value;
          }
          onChanged();
        } else {
          rowMapBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearRowMap() {
        if (rowMapBuilder_ == null) {
          rowMap_ = textkeymatcher.io.Persistent.RowMap.getDefaultInstance();
          onChanged();
        } else {
          rowMapBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public textkeymatcher.io.Persistent.RowMap.Builder getRowMapBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRowMapFieldBuilder().getBuilder();
      }
      public textkeymatcher.io.Persistent.RowMapOrBuilder getRowMapOrBuilder() {
        if (rowMapBuilder_ != null) {
          return rowMapBuilder_.getMessageOrBuilder();
        } else {
          return rowMap_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          textkeymatcher.io.Persistent.RowMap, textkeymatcher.io.Persistent.RowMap.Builder, textkeymatcher.io.Persistent.RowMapOrBuilder> 
          getRowMapFieldBuilder() {
        if (rowMapBuilder_ == null) {
          rowMapBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              textkeymatcher.io.Persistent.RowMap, textkeymatcher.io.Persistent.RowMap.Builder, textkeymatcher.io.Persistent.RowMapOrBuilder>(
                  rowMap_,
                  getParentForChildren(),
                  isClean());
          rowMap_ = null;
        }
        return rowMapBuilder_;
      }
      
      // required .textkeymatcher.RowView rowView = 2;
      private textkeymatcher.io.Persistent.RowView rowView_ = textkeymatcher.io.Persistent.RowView.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          textkeymatcher.io.Persistent.RowView, textkeymatcher.io.Persistent.RowView.Builder, textkeymatcher.io.Persistent.RowViewOrBuilder> rowViewBuilder_;
      public boolean hasRowView() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public textkeymatcher.io.Persistent.RowView getRowView() {
        if (rowViewBuilder_ == null) {
          return rowView_;
        } else {
          return rowViewBuilder_.getMessage();
        }
      }
      public Builder setRowView(textkeymatcher.io.Persistent.RowView value) {
        if (rowViewBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rowView_ = value;
          onChanged();
        } else {
          rowViewBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setRowView(
          textkeymatcher.io.Persistent.RowView.Builder builderForValue) {
        if (rowViewBuilder_ == null) {
          rowView_ = builderForValue.build();
          onChanged();
        } else {
          rowViewBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeRowView(textkeymatcher.io.Persistent.RowView value) {
        if (rowViewBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              rowView_ != textkeymatcher.io.Persistent.RowView.getDefaultInstance()) {
            rowView_ =
              textkeymatcher.io.Persistent.RowView.newBuilder(rowView_).mergeFrom(value).buildPartial();
          } else {
            rowView_ = value;
          }
          onChanged();
        } else {
          rowViewBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearRowView() {
        if (rowViewBuilder_ == null) {
          rowView_ = textkeymatcher.io.Persistent.RowView.getDefaultInstance();
          onChanged();
        } else {
          rowViewBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public textkeymatcher.io.Persistent.RowView.Builder getRowViewBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRowViewFieldBuilder().getBuilder();
      }
      public textkeymatcher.io.Persistent.RowViewOrBuilder getRowViewOrBuilder() {
        if (rowViewBuilder_ != null) {
          return rowViewBuilder_.getMessageOrBuilder();
        } else {
          return rowView_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          textkeymatcher.io.Persistent.RowView, textkeymatcher.io.Persistent.RowView.Builder, textkeymatcher.io.Persistent.RowViewOrBuilder> 
          getRowViewFieldBuilder() {
        if (rowViewBuilder_ == null) {
          rowViewBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              textkeymatcher.io.Persistent.RowView, textkeymatcher.io.Persistent.RowView.Builder, textkeymatcher.io.Persistent.RowViewOrBuilder>(
                  rowView_,
                  getParentForChildren(),
                  isClean());
          rowView_ = null;
        }
        return rowViewBuilder_;
      }
      
      // optional string creationDate = 3;
      private java.lang.Object creationDate_ = "";
      public boolean hasCreationDate() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getCreationDate() {
        java.lang.Object ref = creationDate_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          creationDate_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setCreationDate(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        creationDate_ = value;
        onChanged();
        return this;
      }
      public Builder clearCreationDate() {
        bitField0_ = (bitField0_ & ~0x00000004);
        creationDate_ = getDefaultInstance().getCreationDate();
        onChanged();
        return this;
      }
      void setCreationDate(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000004;
        creationDate_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:textkeymatcher.TextKeyMatcherDoc)
    }
    
    static {
      defaultInstance = new TextKeyMatcherDoc(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:textkeymatcher.TextKeyMatcherDoc)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_textkeymatcher_LineData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_textkeymatcher_LineData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_textkeymatcher_LineDataList_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_textkeymatcher_LineDataList_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_textkeymatcher_RowMap_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_textkeymatcher_RowMap_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_textkeymatcher_RowView_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_textkeymatcher_RowView_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_textkeymatcher_TextKeyMatcherDoc_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_textkeymatcher_TextKeyMatcherDoc_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\020persistent.proto\022\016textkeymatcher\"&\n\010Li" +
      "neData\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 \002(\t\"J\n\014Li" +
      "neDataList\022\r\n\005title\030\001 \001(\t\022+\n\tlineDatas\030\002" +
      " \003(\0132\030.textkeymatcher.LineData\"\263\001\n\006RowMa" +
      "p\022=\n\016keyMatcherType\030\001 \002(\0162%.textkeymatch" +
      "er.RowMap.KeyMatcherType\022+\n\005datas\030\002 \003(\0132" +
      "\034.textkeymatcher.LineDataList\"=\n\016KeyMatc" +
      "herType\022\010\n\004TEXT\020\000\022\024\n\020TEXT_IGNORE_CASE\020\001\022" +
      "\013\n\007NUMERIC\020\002\"\247\001\n\007RowView\0226\n\nfilterType\030\001" +
      " \002(\0162\".textkeymatcher.RowView.FilterType",
      "\"d\n\nFilterType\022\007\n\003ALL\020\000\022\013\n\007MATCHED\020\001\022\r\n\t" +
      "UNMATCHED\020\002\022\027\n\023EXISTS_FIRST_COLUMN\020\003\022\030\n\024" +
      "MISSING_FIRST_COLUMN\020\004\"{\n\021TextKeyMatcher" +
      "Doc\022&\n\006rowMap\030\001 \002(\0132\026.textkeymatcher.Row" +
      "Map\022(\n\007rowView\030\002 \002(\0132\027.textkeymatcher.Ro" +
      "wView\022\024\n\014creationDate\030\003 \001(\tB\037\n\021textkeyma" +
      "tcher.ioB\nPersistent"
    };
    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;
          internal_static_textkeymatcher_LineData_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_textkeymatcher_LineData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_textkeymatcher_LineData_descriptor,
              new java.lang.String[] { "Key", "Value", },
              textkeymatcher.io.Persistent.LineData.class,
              textkeymatcher.io.Persistent.LineData.Builder.class);
          internal_static_textkeymatcher_LineDataList_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_textkeymatcher_LineDataList_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_textkeymatcher_LineDataList_descriptor,
              new java.lang.String[] { "Title", "LineDatas", },
              textkeymatcher.io.Persistent.LineDataList.class,
              textkeymatcher.io.Persistent.LineDataList.Builder.class);
          internal_static_textkeymatcher_RowMap_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_textkeymatcher_RowMap_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_textkeymatcher_RowMap_descriptor,
              new java.lang.String[] { "KeyMatcherType", "Datas", },
              textkeymatcher.io.Persistent.RowMap.class,
              textkeymatcher.io.Persistent.RowMap.Builder.class);
          internal_static_textkeymatcher_RowView_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_textkeymatcher_RowView_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_textkeymatcher_RowView_descriptor,
              new java.lang.String[] { "FilterType", },
              textkeymatcher.io.Persistent.RowView.class,
              textkeymatcher.io.Persistent.RowView.Builder.class);
          internal_static_textkeymatcher_TextKeyMatcherDoc_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_textkeymatcher_TextKeyMatcherDoc_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_textkeymatcher_TextKeyMatcherDoc_descriptor,
              new java.lang.String[] { "RowMap", "RowView", "CreationDate", },
              textkeymatcher.io.Persistent.TextKeyMatcherDoc.class,
              textkeymatcher.io.Persistent.TextKeyMatcherDoc.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
