/*
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

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

package com.google.cloud.firestore.conformance;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface TestSuiteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.TestSuite)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test>
    getTestsList();
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index);
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    int getTestsCount();
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>
    getTestsOrBuilderList();
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A collection of tests.
   * </pre>
   *
   * Protobuf type {@code tests.TestSuite}
   */
  public  static final class TestSuite extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.TestSuite)
      TestSuiteOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use TestSuite.newBuilder() to construct.
    private TestSuite(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestSuite() {
      tests_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TestSuite(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                tests_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Test>();
                mutable_bitField0_ |= 0x00000001;
              }
              tests_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Test.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          tests_ = java.util.Collections.unmodifiableList(tests_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_TestSuite_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_TestSuite_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.TestSuite.class, com.google.cloud.firestore.conformance.TestDefinition.TestSuite.Builder.class);
    }

    public static final int TESTS_FIELD_NUMBER = 1;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test> tests_;
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test> getTestsList() {
      return tests_;
    }
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>
    getTestsOrBuilderList() {
      return tests_;
    }
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    public int getTestsCount() {
      return tests_.size();
    }
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index) {
      return tests_.get(index);
    }
    /**
     * <code>repeated .tests.Test tests = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder(
        int index) {
      return tests_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      for (int i = 0; i < tests_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, tests_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.TestSuite)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.TestSuite other = (com.google.cloud.firestore.conformance.TestDefinition.TestSuite) obj;

      boolean result = true;
      result = result && getTestsList()
          .equals(other.getTestsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTestsCount() > 0) {
        hash = (37 * hash) + TESTS_FIELD_NUMBER;
        hash = (53 * hash) + getTestsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.TestSuite prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A collection of tests.
     * </pre>
     *
     * Protobuf type {@code tests.TestSuite}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.TestSuite)
        com.google.cloud.firestore.conformance.TestDefinition.TestSuiteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_TestSuite_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_TestSuite_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.TestSuite.class, com.google.cloud.firestore.conformance.TestDefinition.TestSuite.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.TestSuite.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getTestsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (testsBuilder_ == null) {
          tests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          testsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_TestSuite_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.TestSuite getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.TestSuite.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.TestSuite build() {
        com.google.cloud.firestore.conformance.TestDefinition.TestSuite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.TestSuite buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.TestSuite result = new com.google.cloud.firestore.conformance.TestDefinition.TestSuite(this);
        int from_bitField0_ = bitField0_;
        if (testsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            tests_ = java.util.Collections.unmodifiableList(tests_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.tests_ = tests_;
        } else {
          result.tests_ = testsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.TestSuite) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.TestSuite)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.TestSuite other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.TestSuite.getDefaultInstance()) return this;
        if (testsBuilder_ == null) {
          if (!other.tests_.isEmpty()) {
            if (tests_.isEmpty()) {
              tests_ = other.tests_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTestsIsMutable();
              tests_.addAll(other.tests_);
            }
            onChanged();
          }
        } else {
          if (!other.tests_.isEmpty()) {
            if (testsBuilder_.isEmpty()) {
              testsBuilder_.dispose();
              testsBuilder_ = null;
              tests_ = other.tests_;
              bitField0_ = (bitField0_ & ~0x00000001);
              testsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getTestsFieldBuilder() : null;
            } else {
              testsBuilder_.addAllMessages(other.tests_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.TestSuite parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.TestSuite) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test> tests_ =
          java.util.Collections.emptyList();
      private void ensureTestsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          tests_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Test>(tests_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Test, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder> testsBuilder_;

      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test> getTestsList() {
        if (testsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(tests_);
        } else {
          return testsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public int getTestsCount() {
        if (testsBuilder_ == null) {
          return tests_.size();
        } else {
          return testsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index) {
        if (testsBuilder_ == null) {
          return tests_.get(index);
        } else {
          return testsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder setTests(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Test value) {
        if (testsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestsIsMutable();
          tests_.set(index, value);
          onChanged();
        } else {
          testsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder setTests(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) {
        if (testsBuilder_ == null) {
          ensureTestsIsMutable();
          tests_.set(index, builderForValue.build());
          onChanged();
        } else {
          testsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder addTests(com.google.cloud.firestore.conformance.TestDefinition.Test value) {
        if (testsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestsIsMutable();
          tests_.add(value);
          onChanged();
        } else {
          testsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder addTests(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Test value) {
        if (testsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestsIsMutable();
          tests_.add(index, value);
          onChanged();
        } else {
          testsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder addTests(
          com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) {
        if (testsBuilder_ == null) {
          ensureTestsIsMutable();
          tests_.add(builderForValue.build());
          onChanged();
        } else {
          testsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder addTests(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) {
        if (testsBuilder_ == null) {
          ensureTestsIsMutable();
          tests_.add(index, builderForValue.build());
          onChanged();
        } else {
          testsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder addAllTests(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.Test> values) {
        if (testsBuilder_ == null) {
          ensureTestsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tests_);
          onChanged();
        } else {
          testsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder clearTests() {
        if (testsBuilder_ == null) {
          tests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          testsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public Builder removeTests(int index) {
        if (testsBuilder_ == null) {
          ensureTestsIsMutable();
          tests_.remove(index);
          onChanged();
        } else {
          testsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder getTestsBuilder(
          int index) {
        return getTestsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder(
          int index) {
        if (testsBuilder_ == null) {
          return tests_.get(index);  } else {
          return testsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>
      getTestsOrBuilderList() {
        if (testsBuilder_ != null) {
          return testsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(tests_);
        }
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder addTestsBuilder() {
        return getTestsFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder addTestsBuilder(
          int index) {
        return getTestsFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Test tests = 1;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Test.Builder>
      getTestsBuilderList() {
        return getTestsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Test, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>
      getTestsFieldBuilder() {
        if (testsBuilder_ == null) {
          testsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Test, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>(
              tests_,
              ((bitField0_ & 0x00000001) == 0x00000001),
              getParentForChildren(),
              isClean());
          tests_ = null;
        }
        return testsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.TestSuite)
    }

    // @@protoc_insertion_point(class_scope:tests.TestSuite)
    private static final com.google.cloud.firestore.conformance.TestDefinition.TestSuite DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.TestSuite();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.TestSuite getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Test)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * short description of the test
     * </pre>
     *
     * <code>string description = 1;</code>
     */
    java.lang.String getDescription();
    /**
     * <pre>
     * short description of the test
     * </pre>
     *
     * <code>string description = 1;</code>
     */
    com.google.protobuf.ByteString
    getDescriptionBytes();

    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    boolean hasGet();
    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet();
    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder getGetOrBuilder();

    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    boolean hasCreate();
    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate();
    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder getCreateOrBuilder();

    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    boolean hasSet();
    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet();
    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder getSetOrBuilder();

    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    boolean hasUpdate();
    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate();
    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder();

    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    boolean hasUpdatePaths();
    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getUpdatePaths();
    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder();

    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    boolean hasDelete();
    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete();
    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder();

    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    boolean hasQuery();
    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery();
    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder getQueryOrBuilder();

    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    boolean hasListen();
    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen();
    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder getListenOrBuilder();

    public com.google.cloud.firestore.conformance.TestDefinition.Test.TestCase getTestCase();
  }
  /**
   * <pre>
   * A Test describes a single client method call and its expected result.
   * </pre>
   *
   * Protobuf type {@code tests.Test}
   */
  public  static final class Test extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Test)
      TestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Test.newBuilder() to construct.
    private Test(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Test() {
      description_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Test(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              description_ = s;
              break;
            }
            case 18: {
              com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder subBuilder = null;
              if (testCase_ == 2) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.GetTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 2;
              break;
            }
            case 26: {
              com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder subBuilder = null;
              if (testCase_ == 3) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.CreateTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 3;
              break;
            }
            case 34: {
              com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder subBuilder = null;
              if (testCase_ == 4) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.SetTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 4;
              break;
            }
            case 42: {
              com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder subBuilder = null;
              if (testCase_ == 5) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 5;
              break;
            }
            case 50: {
              com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder subBuilder = null;
              if (testCase_ == 6) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 6;
              break;
            }
            case 58: {
              com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder subBuilder = null;
              if (testCase_ == 7) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 7;
              break;
            }
            case 66: {
              com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder subBuilder = null;
              if (testCase_ == 8) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.QueryTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 8;
              break;
            }
            case 74: {
              com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder subBuilder = null;
              if (testCase_ == 9) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_).toBuilder();
              }
              test_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.ListenTest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_);
                test_ = subBuilder.buildPartial();
              }
              testCase_ = 9;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Test_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Test_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Test.class, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder.class);
    }

    private int testCase_ = 0;
    private java.lang.Object test_;
    public enum TestCase
        implements com.google.protobuf.Internal.EnumLite {
      GET(2),
      CREATE(3),
      SET(4),
      UPDATE(5),
      UPDATE_PATHS(6),
      DELETE(7),
      QUERY(8),
      LISTEN(9),
      TEST_NOT_SET(0);
      private final int value;
      private TestCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TestCase valueOf(int value) {
        return forNumber(value);
      }

      public static TestCase forNumber(int value) {
        switch (value) {
          case 2: return GET;
          case 3: return CREATE;
          case 4: return SET;
          case 5: return UPDATE;
          case 6: return UPDATE_PATHS;
          case 7: return DELETE;
          case 8: return QUERY;
          case 9: return LISTEN;
          case 0: return TEST_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TestCase
    getTestCase() {
      return TestCase.forNumber(
          testCase_);
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 1;
    private volatile java.lang.Object description_;
    /**
     * <pre>
     * short description of the test
     * </pre>
     *
     * <code>string description = 1;</code>
     */
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        description_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * short description of the test
     * </pre>
     *
     * <code>string description = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GET_FIELD_NUMBER = 2;
    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    public boolean hasGet() {
      return testCase_ == 2;
    }
    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet() {
      if (testCase_ == 2) {
        return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
    }
    /**
     * <code>.tests.GetTest get = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder getGetOrBuilder() {
      if (testCase_ == 2) {
        return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
    }

    public static final int CREATE_FIELD_NUMBER = 3;
    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    public boolean hasCreate() {
      return testCase_ == 3;
    }
    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate() {
      if (testCase_ == 3) {
        return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
    }
    /**
     * <code>.tests.CreateTest create = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder getCreateOrBuilder() {
      if (testCase_ == 3) {
        return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
    }

    public static final int SET_FIELD_NUMBER = 4;
    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    public boolean hasSet() {
      return testCase_ == 4;
    }
    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet() {
      if (testCase_ == 4) {
        return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
    }
    /**
     * <code>.tests.SetTest set = 4;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder getSetOrBuilder() {
      if (testCase_ == 4) {
        return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
    }

    public static final int UPDATE_FIELD_NUMBER = 5;
    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    public boolean hasUpdate() {
      return testCase_ == 5;
    }
    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate() {
      if (testCase_ == 5) {
        return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
    }
    /**
     * <code>.tests.UpdateTest update = 5;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder() {
      if (testCase_ == 5) {
        return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
    }

    public static final int UPDATE_PATHS_FIELD_NUMBER = 6;
    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    public boolean hasUpdatePaths() {
      return testCase_ == 6;
    }
    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getUpdatePaths() {
      if (testCase_ == 6) {
        return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
    }
    /**
     * <code>.tests.UpdatePathsTest update_paths = 6;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder() {
      if (testCase_ == 6) {
        return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
    }

    public static final int DELETE_FIELD_NUMBER = 7;
    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    public boolean hasDelete() {
      return testCase_ == 7;
    }
    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete() {
      if (testCase_ == 7) {
        return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
    }
    /**
     * <code>.tests.DeleteTest delete = 7;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder() {
      if (testCase_ == 7) {
        return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
    }

    public static final int QUERY_FIELD_NUMBER = 8;
    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    public boolean hasQuery() {
      return testCase_ == 8;
    }
    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery() {
      if (testCase_ == 8) {
        return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
    }
    /**
     * <code>.tests.QueryTest query = 8;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder getQueryOrBuilder() {
      if (testCase_ == 8) {
        return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
    }

    public static final int LISTEN_FIELD_NUMBER = 9;
    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    public boolean hasListen() {
      return testCase_ == 9;
    }
    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen() {
      if (testCase_ == 9) {
        return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
    }
    /**
     * <code>.tests.ListenTest listen = 9;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder getListenOrBuilder() {
      if (testCase_ == 9) {
        return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDescriptionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, description_);
      }
      if (testCase_ == 2) {
        output.writeMessage(2, (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_);
      }
      if (testCase_ == 3) {
        output.writeMessage(3, (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_);
      }
      if (testCase_ == 4) {
        output.writeMessage(4, (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_);
      }
      if (testCase_ == 5) {
        output.writeMessage(5, (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_);
      }
      if (testCase_ == 6) {
        output.writeMessage(6, (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_);
      }
      if (testCase_ == 7) {
        output.writeMessage(7, (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_);
      }
      if (testCase_ == 8) {
        output.writeMessage(8, (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_);
      }
      if (testCase_ == 9) {
        output.writeMessage(9, (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDescriptionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, description_);
      }
      if (testCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_);
      }
      if (testCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_);
      }
      if (testCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_);
      }
      if (testCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_);
      }
      if (testCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_);
      }
      if (testCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_);
      }
      if (testCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_);
      }
      if (testCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Test)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Test other = (com.google.cloud.firestore.conformance.TestDefinition.Test) obj;

      boolean result = true;
      result = result && getDescription()
          .equals(other.getDescription());
      result = result && getTestCase().equals(
          other.getTestCase());
      if (!result) return false;
      switch (testCase_) {
        case 2:
          result = result && getGet()
              .equals(other.getGet());
          break;
        case 3:
          result = result && getCreate()
              .equals(other.getCreate());
          break;
        case 4:
          result = result && getSet()
              .equals(other.getSet());
          break;
        case 5:
          result = result && getUpdate()
              .equals(other.getUpdate());
          break;
        case 6:
          result = result && getUpdatePaths()
              .equals(other.getUpdatePaths());
          break;
        case 7:
          result = result && getDelete()
              .equals(other.getDelete());
          break;
        case 8:
          result = result && getQuery()
              .equals(other.getQuery());
          break;
        case 9:
          result = result && getListen()
              .equals(other.getListen());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      switch (testCase_) {
        case 2:
          hash = (37 * hash) + GET_FIELD_NUMBER;
          hash = (53 * hash) + getGet().hashCode();
          break;
        case 3:
          hash = (37 * hash) + CREATE_FIELD_NUMBER;
          hash = (53 * hash) + getCreate().hashCode();
          break;
        case 4:
          hash = (37 * hash) + SET_FIELD_NUMBER;
          hash = (53 * hash) + getSet().hashCode();
          break;
        case 5:
          hash = (37 * hash) + UPDATE_FIELD_NUMBER;
          hash = (53 * hash) + getUpdate().hashCode();
          break;
        case 6:
          hash = (37 * hash) + UPDATE_PATHS_FIELD_NUMBER;
          hash = (53 * hash) + getUpdatePaths().hashCode();
          break;
        case 7:
          hash = (37 * hash) + DELETE_FIELD_NUMBER;
          hash = (53 * hash) + getDelete().hashCode();
          break;
        case 8:
          hash = (37 * hash) + QUERY_FIELD_NUMBER;
          hash = (53 * hash) + getQuery().hashCode();
          break;
        case 9:
          hash = (37 * hash) + LISTEN_FIELD_NUMBER;
          hash = (53 * hash) + getListen().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Test prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A Test describes a single client method call and its expected result.
     * </pre>
     *
     * Protobuf type {@code tests.Test}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Test)
        com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Test_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Test_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Test.class, com.google.cloud.firestore.conformance.TestDefinition.Test.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Test.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        description_ = "";

        testCase_ = 0;
        test_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Test_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Test getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Test build() {
        com.google.cloud.firestore.conformance.TestDefinition.Test result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Test buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Test result = new com.google.cloud.firestore.conformance.TestDefinition.Test(this);
        result.description_ = description_;
        if (testCase_ == 2) {
          if (getBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = getBuilder_.build();
          }
        }
        if (testCase_ == 3) {
          if (createBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = createBuilder_.build();
          }
        }
        if (testCase_ == 4) {
          if (setBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = setBuilder_.build();
          }
        }
        if (testCase_ == 5) {
          if (updateBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = updateBuilder_.build();
          }
        }
        if (testCase_ == 6) {
          if (updatePathsBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = updatePathsBuilder_.build();
          }
        }
        if (testCase_ == 7) {
          if (deleteBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = deleteBuilder_.build();
          }
        }
        if (testCase_ == 8) {
          if (queryBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = queryBuilder_.build();
          }
        }
        if (testCase_ == 9) {
          if (listenBuilder_ == null) {
            result.test_ = test_;
          } else {
            result.test_ = listenBuilder_.build();
          }
        }
        result.testCase_ = testCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Test) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Test)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Test other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance()) return this;
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          onChanged();
        }
        switch (other.getTestCase()) {
          case GET: {
            mergeGet(other.getGet());
            break;
          }
          case CREATE: {
            mergeCreate(other.getCreate());
            break;
          }
          case SET: {
            mergeSet(other.getSet());
            break;
          }
          case UPDATE: {
            mergeUpdate(other.getUpdate());
            break;
          }
          case UPDATE_PATHS: {
            mergeUpdatePaths(other.getUpdatePaths());
            break;
          }
          case DELETE: {
            mergeDelete(other.getDelete());
            break;
          }
          case QUERY: {
            mergeQuery(other.getQuery());
            break;
          }
          case LISTEN: {
            mergeListen(other.getListen());
            break;
          }
          case TEST_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Test parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Test) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int testCase_ = 0;
      private java.lang.Object test_;
      public TestCase
      getTestCase() {
        return TestCase.forNumber(
            testCase_);
      }

      public Builder clearTest() {
        testCase_ = 0;
        test_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object description_ = "";
      /**
       * <pre>
       * short description of the test
       * </pre>
       *
       * <code>string description = 1;</code>
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * short description of the test
       * </pre>
       *
       * <code>string description = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * short description of the test
       * </pre>
       *
       * <code>string description = 1;</code>
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        description_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * short description of the test
       * </pre>
       *
       * <code>string description = 1;</code>
       */
      public Builder clearDescription() {

        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * short description of the test
       * </pre>
       *
       * <code>string description = 1;</code>
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        description_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.GetTest, com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder> getBuilder_;
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public boolean hasGet() {
        return testCase_ == 2;
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet() {
        if (getBuilder_ == null) {
          if (testCase_ == 2) {
            return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
        } else {
          if (testCase_ == 2) {
            return getBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public Builder setGet(com.google.cloud.firestore.conformance.TestDefinition.GetTest value) {
        if (getBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          getBuilder_.setMessage(value);
        }
        testCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public Builder setGet(
          com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder builderForValue) {
        if (getBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          getBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public Builder mergeGet(com.google.cloud.firestore.conformance.TestDefinition.GetTest value) {
        if (getBuilder_ == null) {
          if (testCase_ == 2 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.GetTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 2) {
            getBuilder_.mergeFrom(value);
          }
          getBuilder_.setMessage(value);
        }
        testCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public Builder clearGet() {
        if (getBuilder_ == null) {
          if (testCase_ == 2) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 2) {
            testCase_ = 0;
            test_ = null;
          }
          getBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder getGetBuilder() {
        return getGetFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder getGetOrBuilder() {
        if ((testCase_ == 2) && (getBuilder_ != null)) {
          return getBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 2) {
            return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.GetTest get = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.GetTest, com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder>
      getGetFieldBuilder() {
        if (getBuilder_ == null) {
          if (!(testCase_ == 2)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
          }
          getBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.GetTest, com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 2;
        onChanged();;
        return getBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.CreateTest, com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder> createBuilder_;
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public boolean hasCreate() {
        return testCase_ == 3;
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate() {
        if (createBuilder_ == null) {
          if (testCase_ == 3) {
            return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
        } else {
          if (testCase_ == 3) {
            return createBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public Builder setCreate(com.google.cloud.firestore.conformance.TestDefinition.CreateTest value) {
        if (createBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          createBuilder_.setMessage(value);
        }
        testCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public Builder setCreate(
          com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder builderForValue) {
        if (createBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          createBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public Builder mergeCreate(com.google.cloud.firestore.conformance.TestDefinition.CreateTest value) {
        if (createBuilder_ == null) {
          if (testCase_ == 3 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.CreateTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 3) {
            createBuilder_.mergeFrom(value);
          }
          createBuilder_.setMessage(value);
        }
        testCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public Builder clearCreate() {
        if (createBuilder_ == null) {
          if (testCase_ == 3) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 3) {
            testCase_ = 0;
            test_ = null;
          }
          createBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder getCreateBuilder() {
        return getCreateFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder getCreateOrBuilder() {
        if ((testCase_ == 3) && (createBuilder_ != null)) {
          return createBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 3) {
            return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.CreateTest create = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.CreateTest, com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder>
      getCreateFieldBuilder() {
        if (createBuilder_ == null) {
          if (!(testCase_ == 3)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
          }
          createBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.CreateTest, com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 3;
        onChanged();;
        return createBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.SetTest, com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder> setBuilder_;
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public boolean hasSet() {
        return testCase_ == 4;
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet() {
        if (setBuilder_ == null) {
          if (testCase_ == 4) {
            return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
        } else {
          if (testCase_ == 4) {
            return setBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public Builder setSet(com.google.cloud.firestore.conformance.TestDefinition.SetTest value) {
        if (setBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          setBuilder_.setMessage(value);
        }
        testCase_ = 4;
        return this;
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public Builder setSet(
          com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder builderForValue) {
        if (setBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          setBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 4;
        return this;
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public Builder mergeSet(com.google.cloud.firestore.conformance.TestDefinition.SetTest value) {
        if (setBuilder_ == null) {
          if (testCase_ == 4 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.SetTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 4) {
            setBuilder_.mergeFrom(value);
          }
          setBuilder_.setMessage(value);
        }
        testCase_ = 4;
        return this;
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public Builder clearSet() {
        if (setBuilder_ == null) {
          if (testCase_ == 4) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 4) {
            testCase_ = 0;
            test_ = null;
          }
          setBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder getSetBuilder() {
        return getSetFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder getSetOrBuilder() {
        if ((testCase_ == 4) && (setBuilder_ != null)) {
          return setBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 4) {
            return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.SetTest set = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.SetTest, com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder>
      getSetFieldBuilder() {
        if (setBuilder_ == null) {
          if (!(testCase_ == 4)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
          }
          setBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.SetTest, com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 4;
        onChanged();;
        return setBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder> updateBuilder_;
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public boolean hasUpdate() {
        return testCase_ == 5;
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate() {
        if (updateBuilder_ == null) {
          if (testCase_ == 5) {
            return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
        } else {
          if (testCase_ == 5) {
            return updateBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public Builder setUpdate(com.google.cloud.firestore.conformance.TestDefinition.UpdateTest value) {
        if (updateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          updateBuilder_.setMessage(value);
        }
        testCase_ = 5;
        return this;
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public Builder setUpdate(
          com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder builderForValue) {
        if (updateBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          updateBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 5;
        return this;
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public Builder mergeUpdate(com.google.cloud.firestore.conformance.TestDefinition.UpdateTest value) {
        if (updateBuilder_ == null) {
          if (testCase_ == 5 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 5) {
            updateBuilder_.mergeFrom(value);
          }
          updateBuilder_.setMessage(value);
        }
        testCase_ = 5;
        return this;
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public Builder clearUpdate() {
        if (updateBuilder_ == null) {
          if (testCase_ == 5) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 5) {
            testCase_ = 0;
            test_ = null;
          }
          updateBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder getUpdateBuilder() {
        return getUpdateFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder() {
        if ((testCase_ == 5) && (updateBuilder_ != null)) {
          return updateBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 5) {
            return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.UpdateTest update = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder>
      getUpdateFieldBuilder() {
        if (updateBuilder_ == null) {
          if (!(testCase_ == 5)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
          }
          updateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 5;
        onChanged();;
        return updateBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder> updatePathsBuilder_;
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public boolean hasUpdatePaths() {
        return testCase_ == 6;
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getUpdatePaths() {
        if (updatePathsBuilder_ == null) {
          if (testCase_ == 6) {
            return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
        } else {
          if (testCase_ == 6) {
            return updatePathsBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public Builder setUpdatePaths(com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest value) {
        if (updatePathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          updatePathsBuilder_.setMessage(value);
        }
        testCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public Builder setUpdatePaths(
          com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder builderForValue) {
        if (updatePathsBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          updatePathsBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public Builder mergeUpdatePaths(com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest value) {
        if (updatePathsBuilder_ == null) {
          if (testCase_ == 6 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 6) {
            updatePathsBuilder_.mergeFrom(value);
          }
          updatePathsBuilder_.setMessage(value);
        }
        testCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public Builder clearUpdatePaths() {
        if (updatePathsBuilder_ == null) {
          if (testCase_ == 6) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 6) {
            testCase_ = 0;
            test_ = null;
          }
          updatePathsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder getUpdatePathsBuilder() {
        return getUpdatePathsFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder() {
        if ((testCase_ == 6) && (updatePathsBuilder_ != null)) {
          return updatePathsBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 6) {
            return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.UpdatePathsTest update_paths = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder>
      getUpdatePathsFieldBuilder() {
        if (updatePathsBuilder_ == null) {
          if (!(testCase_ == 6)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
          }
          updatePathsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 6;
        onChanged();;
        return updatePathsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder> deleteBuilder_;
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public boolean hasDelete() {
        return testCase_ == 7;
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete() {
        if (deleteBuilder_ == null) {
          if (testCase_ == 7) {
            return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
        } else {
          if (testCase_ == 7) {
            return deleteBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public Builder setDelete(com.google.cloud.firestore.conformance.TestDefinition.DeleteTest value) {
        if (deleteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          deleteBuilder_.setMessage(value);
        }
        testCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public Builder setDelete(
          com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder builderForValue) {
        if (deleteBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          deleteBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public Builder mergeDelete(com.google.cloud.firestore.conformance.TestDefinition.DeleteTest value) {
        if (deleteBuilder_ == null) {
          if (testCase_ == 7 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 7) {
            deleteBuilder_.mergeFrom(value);
          }
          deleteBuilder_.setMessage(value);
        }
        testCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public Builder clearDelete() {
        if (deleteBuilder_ == null) {
          if (testCase_ == 7) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 7) {
            testCase_ = 0;
            test_ = null;
          }
          deleteBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder getDeleteBuilder() {
        return getDeleteFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder() {
        if ((testCase_ == 7) && (deleteBuilder_ != null)) {
          return deleteBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 7) {
            return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.DeleteTest delete = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder>
      getDeleteFieldBuilder() {
        if (deleteBuilder_ == null) {
          if (!(testCase_ == 7)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
          }
          deleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 7;
        onChanged();;
        return deleteBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.QueryTest, com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder> queryBuilder_;
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public boolean hasQuery() {
        return testCase_ == 8;
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery() {
        if (queryBuilder_ == null) {
          if (testCase_ == 8) {
            return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
        } else {
          if (testCase_ == 8) {
            return queryBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public Builder setQuery(com.google.cloud.firestore.conformance.TestDefinition.QueryTest value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          queryBuilder_.setMessage(value);
        }
        testCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public Builder setQuery(
          com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder builderForValue) {
        if (queryBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          queryBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public Builder mergeQuery(com.google.cloud.firestore.conformance.TestDefinition.QueryTest value) {
        if (queryBuilder_ == null) {
          if (testCase_ == 8 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.QueryTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 8) {
            queryBuilder_.mergeFrom(value);
          }
          queryBuilder_.setMessage(value);
        }
        testCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public Builder clearQuery() {
        if (queryBuilder_ == null) {
          if (testCase_ == 8) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 8) {
            testCase_ = 0;
            test_ = null;
          }
          queryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder getQueryBuilder() {
        return getQueryFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder getQueryOrBuilder() {
        if ((testCase_ == 8) && (queryBuilder_ != null)) {
          return queryBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 8) {
            return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.QueryTest query = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.QueryTest, com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder>
      getQueryFieldBuilder() {
        if (queryBuilder_ == null) {
          if (!(testCase_ == 8)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
          }
          queryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.QueryTest, com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 8;
        onChanged();;
        return queryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.ListenTest, com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder> listenBuilder_;
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public boolean hasListen() {
        return testCase_ == 9;
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen() {
        if (listenBuilder_ == null) {
          if (testCase_ == 9) {
            return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
        } else {
          if (testCase_ == 9) {
            return listenBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public Builder setListen(com.google.cloud.firestore.conformance.TestDefinition.ListenTest value) {
        if (listenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          test_ = value;
          onChanged();
        } else {
          listenBuilder_.setMessage(value);
        }
        testCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public Builder setListen(
          com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder builderForValue) {
        if (listenBuilder_ == null) {
          test_ = builderForValue.build();
          onChanged();
        } else {
          listenBuilder_.setMessage(builderForValue.build());
        }
        testCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public Builder mergeListen(com.google.cloud.firestore.conformance.TestDefinition.ListenTest value) {
        if (listenBuilder_ == null) {
          if (testCase_ == 9 &&
              test_ != com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance()) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.ListenTest.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_)
                .mergeFrom(value).buildPartial();
          } else {
            test_ = value;
          }
          onChanged();
        } else {
          if (testCase_ == 9) {
            listenBuilder_.mergeFrom(value);
          }
          listenBuilder_.setMessage(value);
        }
        testCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public Builder clearListen() {
        if (listenBuilder_ == null) {
          if (testCase_ == 9) {
            testCase_ = 0;
            test_ = null;
            onChanged();
          }
        } else {
          if (testCase_ == 9) {
            testCase_ = 0;
            test_ = null;
          }
          listenBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder getListenBuilder() {
        return getListenFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder getListenOrBuilder() {
        if ((testCase_ == 9) && (listenBuilder_ != null)) {
          return listenBuilder_.getMessageOrBuilder();
        } else {
          if (testCase_ == 9) {
            return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.ListenTest listen = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.ListenTest, com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder>
      getListenFieldBuilder() {
        if (listenBuilder_ == null) {
          if (!(testCase_ == 9)) {
            test_ = com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
          }
          listenBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.ListenTest, com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_,
              getParentForChildren(),
              isClean());
          test_ = null;
        }
        testCase_ = 9;
        onChanged();;
        return listenBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Test)
    }

    // @@protoc_insertion_point(class_scope:tests.Test)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Test DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Test();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Test getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Test getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.GetTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    com.google.firestore.v1beta1.GetDocumentRequest getRequest();
    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    com.google.firestore.v1beta1.GetDocumentRequestOrBuilder getRequestOrBuilder();
  }
  /**
   * <pre>
   * Call to the DocumentRef.Get method.
   * </pre>
   *
   * Protobuf type {@code tests.GetTest}
   */
  public  static final class GetTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.GetTest)
      GetTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use GetTest.newBuilder() to construct.
    private GetTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetTest() {
      docRefPath_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              com.google.firestore.v1beta1.GetDocumentRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.GetDocumentRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_GetTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_GetTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.GetTest.class, com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder.class);
    }

    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUEST_FIELD_NUMBER = 2;
    private com.google.firestore.v1beta1.GetDocumentRequest request_;
    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    public com.google.firestore.v1beta1.GetDocumentRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.GetDocumentRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * The request that the call should send to the Firestore service.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
     */
    public com.google.firestore.v1beta1.GetDocumentRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (request_ != null) {
        output.writeMessage(2, getRequest());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getRequest());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.GetTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.GetTest other = (com.google.cloud.firestore.conformance.TestDefinition.GetTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.GetTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Call to the DocumentRef.Get method.
     * </pre>
     *
     * Protobuf type {@code tests.GetTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.GetTest)
        com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_GetTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_GetTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.GetTest.class, com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.GetTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_GetTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.GetTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.GetTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.GetTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.GetTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.GetTest result = new com.google.cloud.firestore.conformance.TestDefinition.GetTest(this);
        result.docRefPath_ = docRefPath_;
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.GetTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.GetTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.GetTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.GetTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.GetTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.GetDocumentRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.GetDocumentRequest, com.google.firestore.v1beta1.GetDocumentRequest.Builder, com.google.firestore.v1beta1.GetDocumentRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public com.google.firestore.v1beta1.GetDocumentRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.GetDocumentRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.GetDocumentRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.GetDocumentRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.GetDocumentRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.GetDocumentRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public com.google.firestore.v1beta1.GetDocumentRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      public com.google.firestore.v1beta1.GetDocumentRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.GetDocumentRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * The request that the call should send to the Firestore service.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.GetDocumentRequest request = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.GetDocumentRequest, com.google.firestore.v1beta1.GetDocumentRequest.Builder, com.google.firestore.v1beta1.GetDocumentRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.GetDocumentRequest, com.google.firestore.v1beta1.GetDocumentRequest.Builder, com.google.firestore.v1beta1.GetDocumentRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.GetTest)
    }

    // @@protoc_insertion_point(class_scope:tests.GetTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.GetTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.GetTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.GetTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.GetTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.CreateTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <pre>
     * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
     * denote the two special sentinel values. Values that could be interpreted as integers
     * (i.e. digit strings) should be treated as integers.
     * </pre>
     *
     * <code>string json_data = 2;</code>
     */
    java.lang.String getJsonData();
    /**
     * <pre>
     * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
     * denote the two special sentinel values. Values that could be interpreted as integers
     * (i.e. digit strings) should be treated as integers.
     * </pre>
     *
     * <code>string json_data = 2;</code>
     */
    com.google.protobuf.ByteString
    getJsonDataBytes();

    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    com.google.firestore.v1beta1.CommitRequest getRequest();
    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * If true, the call should result in an error without generating a request.
     * If this is true, request should not be set.
     * </pre>
     *
     * <code>bool is_error = 4;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * Call to DocumentRef.Create.
   * </pre>
   *
   * Protobuf type {@code tests.CreateTest}
   */
  public  static final class CreateTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.CreateTest)
      CreateTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use CreateTest.newBuilder() to construct.
    private CreateTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateTest() {
      docRefPath_ = "";
      jsonData_ = "";
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CreateTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              jsonData_ = s;
              break;
            }
            case 26: {
              com.google.firestore.v1beta1.CommitRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.CommitRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_CreateTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_CreateTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.CreateTest.class, com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder.class);
    }

    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int JSON_DATA_FIELD_NUMBER = 2;
    private volatile java.lang.Object jsonData_;
    /**
     * <pre>
     * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
     * denote the two special sentinel values. Values that could be interpreted as integers
     * (i.e. digit strings) should be treated as integers.
     * </pre>
     *
     * <code>string json_data = 2;</code>
     */
    public java.lang.String getJsonData() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        jsonData_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
     * denote the two special sentinel values. Values that could be interpreted as integers
     * (i.e. digit strings) should be treated as integers.
     * </pre>
     *
     * <code>string json_data = 2;</code>
     */
    public com.google.protobuf.ByteString
    getJsonDataBytes() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonData_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUEST_FIELD_NUMBER = 3;
    private com.google.firestore.v1beta1.CommitRequest request_;
    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public com.google.firestore.v1beta1.CommitRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * The request that the call should generate.
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 4;
    private boolean isError_;
    /**
     * <pre>
     * If true, the call should result in an error without generating a request.
     * If this is true, request should not be set.
     * </pre>
     *
     * <code>bool is_error = 4;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (!getJsonDataBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, jsonData_);
      }
      if (request_ != null) {
        output.writeMessage(3, getRequest());
      }
      if (isError_ != false) {
        output.writeBool(4, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (!getJsonDataBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, jsonData_);
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getRequest());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.CreateTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.CreateTest other = (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && getJsonData()
          .equals(other.getJsonData());
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      hash = (37 * hash) + JSON_DATA_FIELD_NUMBER;
      hash = (53 * hash) + getJsonData().hashCode();
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.CreateTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Call to DocumentRef.Create.
     * </pre>
     *
     * Protobuf type {@code tests.CreateTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.CreateTest)
        com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_CreateTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_CreateTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.CreateTest.class, com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.CreateTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        jsonData_ = "";

        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_CreateTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.CreateTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.CreateTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.CreateTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.CreateTest result = new com.google.cloud.firestore.conformance.TestDefinition.CreateTest(this);
        result.docRefPath_ = docRefPath_;
        result.jsonData_ = jsonData_;
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        result.isError_ = isError_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.CreateTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.CreateTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.CreateTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (!other.getJsonData().isEmpty()) {
          jsonData_ = other.jsonData_;
          onChanged();
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.CreateTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object jsonData_ = "";
      /**
       * <pre>
       * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
       * denote the two special sentinel values. Values that could be interpreted as integers
       * (i.e. digit strings) should be treated as integers.
       * </pre>
       *
       * <code>string json_data = 2;</code>
       */
      public java.lang.String getJsonData() {
        java.lang.Object ref = jsonData_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          jsonData_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
       * denote the two special sentinel values. Values that could be interpreted as integers
       * (i.e. digit strings) should be treated as integers.
       * </pre>
       *
       * <code>string json_data = 2;</code>
       */
      public com.google.protobuf.ByteString
      getJsonDataBytes() {
        java.lang.Object ref = jsonData_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonData_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
       * denote the two special sentinel values. Values that could be interpreted as integers
       * (i.e. digit strings) should be treated as integers.
       * </pre>
       *
       * <code>string json_data = 2;</code>
       */
      public Builder setJsonData(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        jsonData_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
       * denote the two special sentinel values. Values that could be interpreted as integers
       * (i.e. digit strings) should be treated as integers.
       * </pre>
       *
       * <code>string json_data = 2;</code>
       */
      public Builder clearJsonData() {

        jsonData_ = getDefaultInstance().getJsonData();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp"
       * denote the two special sentinel values. Values that could be interpreted as integers
       * (i.e. digit strings) should be treated as integers.
       * </pre>
       *
       * <code>string json_data = 2;</code>
       */
      public Builder setJsonDataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        jsonData_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.CommitRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.CommitRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.CommitRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * The request that the call should generate.
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private boolean isError_ ;
      /**
       * <pre>
       * If true, the call should result in an error without generating a request.
       * If this is true, request should not be set.
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <pre>
       * If true, the call should result in an error without generating a request.
       * If this is true, request should not be set.
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, the call should result in an error without generating a request.
       * If this is true, request should not be set.
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.CreateTest)
    }

    // @@protoc_insertion_point(class_scope:tests.CreateTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.CreateTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.CreateTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.SetTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    boolean hasOption();
    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption();
    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder getOptionOrBuilder();

    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    java.lang.String getJsonData();
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    com.google.protobuf.ByteString
    getJsonDataBytes();

    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    com.google.firestore.v1beta1.CommitRequest getRequest();
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 5;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * A call to DocumentRef.Set.
   * </pre>
   *
   * Protobuf type {@code tests.SetTest}
   */
  public  static final class SetTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.SetTest)
      SetTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SetTest.newBuilder() to construct.
    private SetTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetTest() {
      docRefPath_ = "";
      jsonData_ = "";
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SetTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder subBuilder = null;
              if (option_ != null) {
                subBuilder = option_.toBuilder();
              }
              option_ = input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.SetOption.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(option_);
                option_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              jsonData_ = s;
              break;
            }
            case 34: {
              com.google.firestore.v1beta1.CommitRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.CommitRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.SetTest.class, com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder.class);
    }

    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTION_FIELD_NUMBER = 2;
    private com.google.cloud.firestore.conformance.TestDefinition.SetOption option_;
    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    public boolean hasOption() {
      return option_ != null;
    }
    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption() {
      return option_ == null ? com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() : option_;
    }
    /**
     * <pre>
     * option to the Set call, if any
     * </pre>
     *
     * <code>.tests.SetOption option = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder getOptionOrBuilder() {
      return getOption();
    }

    public static final int JSON_DATA_FIELD_NUMBER = 3;
    private volatile java.lang.Object jsonData_;
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    public java.lang.String getJsonData() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        jsonData_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    public com.google.protobuf.ByteString
    getJsonDataBytes() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonData_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUEST_FIELD_NUMBER = 4;
    private com.google.firestore.v1beta1.CommitRequest request_;
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public com.google.firestore.v1beta1.CommitRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 5;
    private boolean isError_;
    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 5;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (option_ != null) {
        output.writeMessage(2, getOption());
      }
      if (!getJsonDataBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, jsonData_);
      }
      if (request_ != null) {
        output.writeMessage(4, getRequest());
      }
      if (isError_ != false) {
        output.writeBool(5, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (option_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOption());
      }
      if (!getJsonDataBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, jsonData_);
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getRequest());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.SetTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.SetTest other = (com.google.cloud.firestore.conformance.TestDefinition.SetTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && (hasOption() == other.hasOption());
      if (hasOption()) {
        result = result && getOption()
            .equals(other.getOption());
      }
      result = result && getJsonData()
          .equals(other.getJsonData());
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      if (hasOption()) {
        hash = (37 * hash) + OPTION_FIELD_NUMBER;
        hash = (53 * hash) + getOption().hashCode();
      }
      hash = (37 * hash) + JSON_DATA_FIELD_NUMBER;
      hash = (53 * hash) + getJsonData().hashCode();
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.SetTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A call to DocumentRef.Set.
     * </pre>
     *
     * Protobuf type {@code tests.SetTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.SetTest)
        com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.SetTest.class, com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.SetTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        if (optionBuilder_ == null) {
          option_ = null;
        } else {
          option_ = null;
          optionBuilder_ = null;
        }
        jsonData_ = "";

        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.SetTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.SetTest result = new com.google.cloud.firestore.conformance.TestDefinition.SetTest(this);
        result.docRefPath_ = docRefPath_;
        if (optionBuilder_ == null) {
          result.option_ = option_;
        } else {
          result.option_ = optionBuilder_.build();
        }
        result.jsonData_ = jsonData_;
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        result.isError_ = isError_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.SetTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.SetTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.SetTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (other.hasOption()) {
          mergeOption(other.getOption());
        }
        if (!other.getJsonData().isEmpty()) {
          jsonData_ = other.jsonData_;
          onChanged();
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.SetTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.SetTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private com.google.cloud.firestore.conformance.TestDefinition.SetOption option_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.SetOption, com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder> optionBuilder_;
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public boolean hasOption() {
        return optionBuilder_ != null || option_ != null;
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption() {
        if (optionBuilder_ == null) {
          return option_ == null ? com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() : option_;
        } else {
          return optionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public Builder setOption(com.google.cloud.firestore.conformance.TestDefinition.SetOption value) {
        if (optionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          option_ = value;
          onChanged();
        } else {
          optionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public Builder setOption(
          com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder builderForValue) {
        if (optionBuilder_ == null) {
          option_ = builderForValue.build();
          onChanged();
        } else {
          optionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public Builder mergeOption(com.google.cloud.firestore.conformance.TestDefinition.SetOption value) {
        if (optionBuilder_ == null) {
          if (option_ != null) {
            option_ =
                com.google.cloud.firestore.conformance.TestDefinition.SetOption.newBuilder(option_).mergeFrom(value).buildPartial();
          } else {
            option_ = value;
          }
          onChanged();
        } else {
          optionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public Builder clearOption() {
        if (optionBuilder_ == null) {
          option_ = null;
          onChanged();
        } else {
          option_ = null;
          optionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder getOptionBuilder() {

        onChanged();
        return getOptionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder getOptionOrBuilder() {
        if (optionBuilder_ != null) {
          return optionBuilder_.getMessageOrBuilder();
        } else {
          return option_ == null ?
              com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() : option_;
        }
      }
      /**
       * <pre>
       * option to the Set call, if any
       * </pre>
       *
       * <code>.tests.SetOption option = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.SetOption, com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder>
      getOptionFieldBuilder() {
        if (optionBuilder_ == null) {
          optionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.SetOption, com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder>(
              getOption(),
              getParentForChildren(),
              isClean());
          option_ = null;
        }
        return optionBuilder_;
      }

      private java.lang.Object jsonData_ = "";
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public java.lang.String getJsonData() {
        java.lang.Object ref = jsonData_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          jsonData_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public com.google.protobuf.ByteString
      getJsonDataBytes() {
        java.lang.Object ref = jsonData_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonData_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder setJsonData(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        jsonData_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder clearJsonData() {

        jsonData_ = getDefaultInstance().getJsonData();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder setJsonDataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        jsonData_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.CommitRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.CommitRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.CommitRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private boolean isError_ ;
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.SetTest)
    }

    // @@protoc_insertion_point(class_scope:tests.SetTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.SetTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.SetTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.SetTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.SetTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UpdateTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.UpdateTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    boolean hasPrecondition();
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.Precondition getPrecondition();
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder();

    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    java.lang.String getJsonData();
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    com.google.protobuf.ByteString
    getJsonDataBytes();

    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    com.google.firestore.v1beta1.CommitRequest getRequest();
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 5;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * A call to the form of DocumentRef.Update that represents the data as a map
   * or dictionary.
   * </pre>
   *
   * Protobuf type {@code tests.UpdateTest}
   */
  public  static final class UpdateTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.UpdateTest)
      UpdateTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use UpdateTest.newBuilder() to construct.
    private UpdateTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UpdateTest() {
      docRefPath_ = "";
      jsonData_ = "";
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UpdateTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              com.google.firestore.v1beta1.Precondition.Builder subBuilder = null;
              if (precondition_ != null) {
                subBuilder = precondition_.toBuilder();
              }
              precondition_ = input.readMessage(com.google.firestore.v1beta1.Precondition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(precondition_);
                precondition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              jsonData_ = s;
              break;
            }
            case 34: {
              com.google.firestore.v1beta1.CommitRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.CommitRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdateTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdateTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.class, com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder.class);
    }

    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRECONDITION_FIELD_NUMBER = 2;
    private com.google.firestore.v1beta1.Precondition precondition_;
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public boolean hasPrecondition() {
      return precondition_ != null;
    }
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.Precondition getPrecondition() {
      return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
    }
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
      return getPrecondition();
    }

    public static final int JSON_DATA_FIELD_NUMBER = 3;
    private volatile java.lang.Object jsonData_;
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    public java.lang.String getJsonData() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        jsonData_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * data (see CreateTest.json_data)
     * </pre>
     *
     * <code>string json_data = 3;</code>
     */
    public com.google.protobuf.ByteString
    getJsonDataBytes() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonData_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUEST_FIELD_NUMBER = 4;
    private com.google.firestore.v1beta1.CommitRequest request_;
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public com.google.firestore.v1beta1.CommitRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * expected request
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
     */
    public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 5;
    private boolean isError_;
    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 5;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (precondition_ != null) {
        output.writeMessage(2, getPrecondition());
      }
      if (!getJsonDataBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, jsonData_);
      }
      if (request_ != null) {
        output.writeMessage(4, getRequest());
      }
      if (isError_ != false) {
        output.writeBool(5, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (precondition_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getPrecondition());
      }
      if (!getJsonDataBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, jsonData_);
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getRequest());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdateTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.UpdateTest other = (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && (hasPrecondition() == other.hasPrecondition());
      if (hasPrecondition()) {
        result = result && getPrecondition()
            .equals(other.getPrecondition());
      }
      result = result && getJsonData()
          .equals(other.getJsonData());
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      if (hasPrecondition()) {
        hash = (37 * hash) + PRECONDITION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecondition().hashCode();
      }
      hash = (37 * hash) + JSON_DATA_FIELD_NUMBER;
      hash = (53 * hash) + getJsonData().hashCode();
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.UpdateTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A call to the form of DocumentRef.Update that represents the data as a map
     * or dictionary.
     * </pre>
     *
     * Protobuf type {@code tests.UpdateTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.UpdateTest)
        com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdateTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdateTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.class, com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        if (preconditionBuilder_ == null) {
          precondition_ = null;
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }
        jsonData_ = "";

        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdateTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.UpdateTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.UpdateTest result = new com.google.cloud.firestore.conformance.TestDefinition.UpdateTest(this);
        result.docRefPath_ = docRefPath_;
        if (preconditionBuilder_ == null) {
          result.precondition_ = precondition_;
        } else {
          result.precondition_ = preconditionBuilder_.build();
        }
        result.jsonData_ = jsonData_;
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        result.isError_ = isError_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.UpdateTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.UpdateTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (other.hasPrecondition()) {
          mergePrecondition(other.getPrecondition());
        }
        if (!other.getJsonData().isEmpty()) {
          jsonData_ = other.jsonData_;
          onChanged();
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.Precondition precondition_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder> preconditionBuilder_;
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public boolean hasPrecondition() {
        return preconditionBuilder_ != null || precondition_ != null;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition getPrecondition() {
        if (preconditionBuilder_ == null) {
          return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        } else {
          return preconditionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precondition_ = value;
          onChanged();
        } else {
          preconditionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(
          com.google.firestore.v1beta1.Precondition.Builder builderForValue) {
        if (preconditionBuilder_ == null) {
          precondition_ = builderForValue.build();
          onChanged();
        } else {
          preconditionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder mergePrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (precondition_ != null) {
            precondition_ =
                com.google.firestore.v1beta1.Precondition.newBuilder(precondition_).mergeFrom(value).buildPartial();
          } else {
            precondition_ = value;
          }
          onChanged();
        } else {
          preconditionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder clearPrecondition() {
        if (preconditionBuilder_ == null) {
          precondition_ = null;
          onChanged();
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition.Builder getPreconditionBuilder() {

        onChanged();
        return getPreconditionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
        if (preconditionBuilder_ != null) {
          return preconditionBuilder_.getMessageOrBuilder();
        } else {
          return precondition_ == null ?
              com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        }
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>
      getPreconditionFieldBuilder() {
        if (preconditionBuilder_ == null) {
          preconditionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>(
              getPrecondition(),
              getParentForChildren(),
              isClean());
          precondition_ = null;
        }
        return preconditionBuilder_;
      }

      private java.lang.Object jsonData_ = "";
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public java.lang.String getJsonData() {
        java.lang.Object ref = jsonData_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          jsonData_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public com.google.protobuf.ByteString
      getJsonDataBytes() {
        java.lang.Object ref = jsonData_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonData_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder setJsonData(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        jsonData_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder clearJsonData() {

        jsonData_ = getDefaultInstance().getJsonData();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * data (see CreateTest.json_data)
       * </pre>
       *
       * <code>string json_data = 3;</code>
       */
      public Builder setJsonDataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        jsonData_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.CommitRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.CommitRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.CommitRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * expected request
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private boolean isError_ ;
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 5;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.UpdateTest)
    }

    // @@protoc_insertion_point(class_scope:tests.UpdateTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.UpdateTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.UpdateTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UpdatePathsTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.UpdatePathsTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    boolean hasPrecondition();
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.Precondition getPrecondition();
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder();

    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>
    getFieldPathsList();
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths(int index);
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    int getFieldPathsCount();
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldPathsOrBuilderList();
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder(
        int index);

    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    java.util.List<java.lang.String>
    getJsonValuesList();
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    int getJsonValuesCount();
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    java.lang.String getJsonValues(int index);
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    com.google.protobuf.ByteString
    getJsonValuesBytes(int index);

    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    com.google.firestore.v1beta1.CommitRequest getRequest();
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 6;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * A call to the form of DocumentRef.Update that represents the data as a list
   * of field paths and their values.
   * </pre>
   *
   * Protobuf type {@code tests.UpdatePathsTest}
   */
  public  static final class UpdatePathsTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.UpdatePathsTest)
      UpdatePathsTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use UpdatePathsTest.newBuilder() to construct.
    private UpdatePathsTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UpdatePathsTest() {
      docRefPath_ = "";
      fieldPaths_ = java.util.Collections.emptyList();
      jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UpdatePathsTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              com.google.firestore.v1beta1.Precondition.Builder subBuilder = null;
              if (precondition_ != null) {
                subBuilder = precondition_.toBuilder();
              }
              precondition_ = input.readMessage(com.google.firestore.v1beta1.Precondition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(precondition_);
                precondition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                fieldPaths_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>();
                mutable_bitField0_ |= 0x00000004;
              }
              fieldPaths_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), extensionRegistry));
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                jsonValues_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              jsonValues_.add(s);
              break;
            }
            case 42: {
              com.google.firestore.v1beta1.CommitRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.CommitRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
            case 48: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          fieldPaths_ = java.util.Collections.unmodifiableList(fieldPaths_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          jsonValues_ = jsonValues_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdatePathsTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdatePathsTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.class, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder.class);
    }

    private int bitField0_;
    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRECONDITION_FIELD_NUMBER = 2;
    private com.google.firestore.v1beta1.Precondition precondition_;
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public boolean hasPrecondition() {
      return precondition_ != null;
    }
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.Precondition getPrecondition() {
      return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
    }
    /**
     * <pre>
     * precondition in call, if any
     * </pre>
     *
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
      return getPrecondition();
    }

    public static final int FIELD_PATHS_FIELD_NUMBER = 3;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fieldPaths_;
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldPathsList() {
      return fieldPaths_;
    }
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldPathsOrBuilderList() {
      return fieldPaths_;
    }
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    public int getFieldPathsCount() {
      return fieldPaths_.size();
    }
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths(int index) {
      return fieldPaths_.get(index);
    }
    /**
     * <pre>
     * parallel sequences: field_paths[i] corresponds to json_values[i]
     * </pre>
     *
     * <code>repeated .tests.FieldPath field_paths = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder(
        int index) {
      return fieldPaths_.get(index);
    }

    public static final int JSON_VALUES_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList jsonValues_;
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    public com.google.protobuf.ProtocolStringList
    getJsonValuesList() {
      return jsonValues_;
    }
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    public int getJsonValuesCount() {
      return jsonValues_.size();
    }
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    public java.lang.String getJsonValues(int index) {
      return jsonValues_.get(index);
    }
    /**
     * <pre>
     * the argument values, as JSON
     * </pre>
     *
     * <code>repeated string json_values = 4;</code>
     */
    public com.google.protobuf.ByteString
    getJsonValuesBytes(int index) {
      return jsonValues_.getByteString(index);
    }

    public static final int REQUEST_FIELD_NUMBER = 5;
    private com.google.firestore.v1beta1.CommitRequest request_;
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    public com.google.firestore.v1beta1.CommitRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
     */
    public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 6;
    private boolean isError_;
    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 6;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (precondition_ != null) {
        output.writeMessage(2, getPrecondition());
      }
      for (int i = 0; i < fieldPaths_.size(); i++) {
        output.writeMessage(3, fieldPaths_.get(i));
      }
      for (int i = 0; i < jsonValues_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, jsonValues_.getRaw(i));
      }
      if (request_ != null) {
        output.writeMessage(5, getRequest());
      }
      if (isError_ != false) {
        output.writeBool(6, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (precondition_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getPrecondition());
      }
      for (int i = 0; i < fieldPaths_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, fieldPaths_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < jsonValues_.size(); i++) {
          dataSize += computeStringSizeNoTag(jsonValues_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getJsonValuesList().size();
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getRequest());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest other = (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && (hasPrecondition() == other.hasPrecondition());
      if (hasPrecondition()) {
        result = result && getPrecondition()
            .equals(other.getPrecondition());
      }
      result = result && getFieldPathsList()
          .equals(other.getFieldPathsList());
      result = result && getJsonValuesList()
          .equals(other.getJsonValuesList());
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      if (hasPrecondition()) {
        hash = (37 * hash) + PRECONDITION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecondition().hashCode();
      }
      if (getFieldPathsCount() > 0) {
        hash = (37 * hash) + FIELD_PATHS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldPathsList().hashCode();
      }
      if (getJsonValuesCount() > 0) {
        hash = (37 * hash) + JSON_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getJsonValuesList().hashCode();
      }
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A call to the form of DocumentRef.Update that represents the data as a list
     * of field paths and their values.
     * </pre>
     *
     * Protobuf type {@code tests.UpdatePathsTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.UpdatePathsTest)
        com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdatePathsTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdatePathsTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.class, com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getFieldPathsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        if (preconditionBuilder_ == null) {
          precondition_ = null;
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }
        if (fieldPathsBuilder_ == null) {
          fieldPaths_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          fieldPathsBuilder_.clear();
        }
        jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_UpdatePathsTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest result = new com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.docRefPath_ = docRefPath_;
        if (preconditionBuilder_ == null) {
          result.precondition_ = precondition_;
        } else {
          result.precondition_ = preconditionBuilder_.build();
        }
        if (fieldPathsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            fieldPaths_ = java.util.Collections.unmodifiableList(fieldPaths_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.fieldPaths_ = fieldPaths_;
        } else {
          result.fieldPaths_ = fieldPathsBuilder_.build();
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          jsonValues_ = jsonValues_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.jsonValues_ = jsonValues_;
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        result.isError_ = isError_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (other.hasPrecondition()) {
          mergePrecondition(other.getPrecondition());
        }
        if (fieldPathsBuilder_ == null) {
          if (!other.fieldPaths_.isEmpty()) {
            if (fieldPaths_.isEmpty()) {
              fieldPaths_ = other.fieldPaths_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureFieldPathsIsMutable();
              fieldPaths_.addAll(other.fieldPaths_);
            }
            onChanged();
          }
        } else {
          if (!other.fieldPaths_.isEmpty()) {
            if (fieldPathsBuilder_.isEmpty()) {
              fieldPathsBuilder_.dispose();
              fieldPathsBuilder_ = null;
              fieldPaths_ = other.fieldPaths_;
              bitField0_ = (bitField0_ & ~0x00000004);
              fieldPathsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getFieldPathsFieldBuilder() : null;
            } else {
              fieldPathsBuilder_.addAllMessages(other.fieldPaths_);
            }
          }
        }
        if (!other.jsonValues_.isEmpty()) {
          if (jsonValues_.isEmpty()) {
            jsonValues_ = other.jsonValues_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureJsonValuesIsMutable();
            jsonValues_.addAll(other.jsonValues_);
          }
          onChanged();
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.Precondition precondition_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder> preconditionBuilder_;
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public boolean hasPrecondition() {
        return preconditionBuilder_ != null || precondition_ != null;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition getPrecondition() {
        if (preconditionBuilder_ == null) {
          return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        } else {
          return preconditionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precondition_ = value;
          onChanged();
        } else {
          preconditionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(
          com.google.firestore.v1beta1.Precondition.Builder builderForValue) {
        if (preconditionBuilder_ == null) {
          precondition_ = builderForValue.build();
          onChanged();
        } else {
          preconditionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder mergePrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (precondition_ != null) {
            precondition_ =
                com.google.firestore.v1beta1.Precondition.newBuilder(precondition_).mergeFrom(value).buildPartial();
          } else {
            precondition_ = value;
          }
          onChanged();
        } else {
          preconditionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder clearPrecondition() {
        if (preconditionBuilder_ == null) {
          precondition_ = null;
          onChanged();
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition.Builder getPreconditionBuilder() {

        onChanged();
        return getPreconditionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
        if (preconditionBuilder_ != null) {
          return preconditionBuilder_.getMessageOrBuilder();
        } else {
          return precondition_ == null ?
              com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        }
      }
      /**
       * <pre>
       * precondition in call, if any
       * </pre>
       *
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>
      getPreconditionFieldBuilder() {
        if (preconditionBuilder_ == null) {
          preconditionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>(
              getPrecondition(),
              getParentForChildren(),
              isClean());
          precondition_ = null;
        }
        return preconditionBuilder_;
      }

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fieldPaths_ =
          java.util.Collections.emptyList();
      private void ensureFieldPathsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          fieldPaths_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fieldPaths_);
          bitField0_ |= 0x00000004;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> fieldPathsBuilder_;

      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldPathsList() {
        if (fieldPathsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fieldPaths_);
        } else {
          return fieldPathsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public int getFieldPathsCount() {
        if (fieldPathsBuilder_ == null) {
          return fieldPaths_.size();
        } else {
          return fieldPathsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths(int index) {
        if (fieldPathsBuilder_ == null) {
          return fieldPaths_.get(index);
        } else {
          return fieldPathsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder setFieldPaths(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldPathsIsMutable();
          fieldPaths_.set(index, value);
          onChanged();
        } else {
          fieldPathsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder setFieldPaths(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldPathsBuilder_ == null) {
          ensureFieldPathsIsMutable();
          fieldPaths_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldPathsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder addFieldPaths(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldPathsIsMutable();
          fieldPaths_.add(value);
          onChanged();
        } else {
          fieldPathsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder addFieldPaths(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldPathsIsMutable();
          fieldPaths_.add(index, value);
          onChanged();
        } else {
          fieldPathsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder addFieldPaths(
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldPathsBuilder_ == null) {
          ensureFieldPathsIsMutable();
          fieldPaths_.add(builderForValue.build());
          onChanged();
        } else {
          fieldPathsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder addFieldPaths(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldPathsBuilder_ == null) {
          ensureFieldPathsIsMutable();
          fieldPaths_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldPathsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder addAllFieldPaths(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> values) {
        if (fieldPathsBuilder_ == null) {
          ensureFieldPathsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fieldPaths_);
          onChanged();
        } else {
          fieldPathsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder clearFieldPaths() {
        if (fieldPathsBuilder_ == null) {
          fieldPaths_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          fieldPathsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public Builder removeFieldPaths(int index) {
        if (fieldPathsBuilder_ == null) {
          ensureFieldPathsIsMutable();
          fieldPaths_.remove(index);
          onChanged();
        } else {
          fieldPathsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder getFieldPathsBuilder(
          int index) {
        return getFieldPathsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder(
          int index) {
        if (fieldPathsBuilder_ == null) {
          return fieldPaths_.get(index);  } else {
          return fieldPathsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldPathsOrBuilderList() {
        if (fieldPathsBuilder_ != null) {
          return fieldPathsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fieldPaths_);
        }
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldPathsBuilder() {
        return getFieldPathsFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldPathsBuilder(
          int index) {
        return getFieldPathsFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <pre>
       * parallel sequences: field_paths[i] corresponds to json_values[i]
       * </pre>
       *
       * <code>repeated .tests.FieldPath field_paths = 3;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder>
      getFieldPathsBuilderList() {
        return getFieldPathsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldPathsFieldBuilder() {
        if (fieldPathsBuilder_ == null) {
          fieldPathsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>(
              fieldPaths_,
              ((bitField0_ & 0x00000004) == 0x00000004),
              getParentForChildren(),
              isClean());
          fieldPaths_ = null;
        }
        return fieldPathsBuilder_;
      }

      private com.google.protobuf.LazyStringList jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureJsonValuesIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          jsonValues_ = new com.google.protobuf.LazyStringArrayList(jsonValues_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public com.google.protobuf.ProtocolStringList
      getJsonValuesList() {
        return jsonValues_.getUnmodifiableView();
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public int getJsonValuesCount() {
        return jsonValues_.size();
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public java.lang.String getJsonValues(int index) {
        return jsonValues_.get(index);
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public com.google.protobuf.ByteString
      getJsonValuesBytes(int index) {
        return jsonValues_.getByteString(index);
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public Builder setJsonValues(
          int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureJsonValuesIsMutable();
        jsonValues_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public Builder addJsonValues(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureJsonValuesIsMutable();
        jsonValues_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public Builder addAllJsonValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureJsonValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, jsonValues_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public Builder clearJsonValues() {
        jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the argument values, as JSON
       * </pre>
       *
       * <code>repeated string json_values = 4;</code>
       */
      public Builder addJsonValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureJsonValuesIsMutable();
        jsonValues_.add(value);
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.CommitRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.CommitRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.CommitRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private boolean isError_ ;
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 6;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 6;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 6;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.UpdatePathsTest)
    }

    // @@protoc_insertion_point(class_scope:tests.UpdatePathsTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeleteTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.DeleteTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    java.lang.String getDocRefPath();
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getDocRefPathBytes();

    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    boolean hasPrecondition();
    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.Precondition getPrecondition();
    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder();

    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    boolean hasRequest();
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    com.google.firestore.v1beta1.CommitRequest getRequest();
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 4;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * A call to DocmentRef.Delete
   * </pre>
   *
   * Protobuf type {@code tests.DeleteTest}
   */
  public  static final class DeleteTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.DeleteTest)
      DeleteTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DeleteTest.newBuilder() to construct.
    private DeleteTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeleteTest() {
      docRefPath_ = "";
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeleteTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              docRefPath_ = s;
              break;
            }
            case 18: {
              com.google.firestore.v1beta1.Precondition.Builder subBuilder = null;
              if (precondition_ != null) {
                subBuilder = precondition_.toBuilder();
              }
              precondition_ = input.readMessage(com.google.firestore.v1beta1.Precondition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(precondition_);
                precondition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              com.google.firestore.v1beta1.CommitRequest.Builder subBuilder = null;
              if (request_ != null) {
                subBuilder = request_.toBuilder();
              }
              request_ = input.readMessage(com.google.firestore.v1beta1.CommitRequest.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(request_);
                request_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DeleteTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DeleteTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.class, com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder.class);
    }

    public static final int DOC_REF_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object docRefPath_;
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public java.lang.String getDocRefPath() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        docRefPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of doc
     * </pre>
     *
     * <code>string doc_ref_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getDocRefPathBytes() {
      java.lang.Object ref = docRefPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docRefPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRECONDITION_FIELD_NUMBER = 2;
    private com.google.firestore.v1beta1.Precondition precondition_;
    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public boolean hasPrecondition() {
      return precondition_ != null;
    }
    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.Precondition getPrecondition() {
      return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
    }
    /**
     * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
     */
    public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
      return getPrecondition();
    }

    public static final int REQUEST_FIELD_NUMBER = 3;
    private com.google.firestore.v1beta1.CommitRequest request_;
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public boolean hasRequest() {
      return request_ != null;
    }
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public com.google.firestore.v1beta1.CommitRequest getRequest() {
      return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * expected rquest
     * </pre>
     *
     * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
     */
    public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
      return getRequest();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 4;
    private boolean isError_;
    /**
     * <pre>
     * call signals an error
     * </pre>
     *
     * <code>bool is_error = 4;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getDocRefPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_);
      }
      if (precondition_ != null) {
        output.writeMessage(2, getPrecondition());
      }
      if (request_ != null) {
        output.writeMessage(3, getRequest());
      }
      if (isError_ != false) {
        output.writeBool(4, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getDocRefPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, docRefPath_);
      }
      if (precondition_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getPrecondition());
      }
      if (request_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getRequest());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DeleteTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.DeleteTest other = (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) obj;

      boolean result = true;
      result = result && getDocRefPath()
          .equals(other.getDocRefPath());
      result = result && (hasPrecondition() == other.hasPrecondition());
      if (hasPrecondition()) {
        result = result && getPrecondition()
            .equals(other.getPrecondition());
      }
      result = result && (hasRequest() == other.hasRequest());
      if (hasRequest()) {
        result = result && getRequest()
            .equals(other.getRequest());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DOC_REF_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getDocRefPath().hashCode();
      if (hasPrecondition()) {
        hash = (37 * hash) + PRECONDITION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecondition().hashCode();
      }
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.DeleteTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A call to DocmentRef.Delete
     * </pre>
     *
     * Protobuf type {@code tests.DeleteTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.DeleteTest)
        com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DeleteTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DeleteTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.class, com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        docRefPath_ = "";

        if (preconditionBuilder_ == null) {
          precondition_ = null;
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }
        if (requestBuilder_ == null) {
          request_ = null;
        } else {
          request_ = null;
          requestBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DeleteTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.DeleteTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.DeleteTest result = new com.google.cloud.firestore.conformance.TestDefinition.DeleteTest(this);
        result.docRefPath_ = docRefPath_;
        if (preconditionBuilder_ == null) {
          result.precondition_ = precondition_;
        } else {
          result.precondition_ = preconditionBuilder_.build();
        }
        if (requestBuilder_ == null) {
          result.request_ = request_;
        } else {
          result.request_ = requestBuilder_.build();
        }
        result.isError_ = isError_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.DeleteTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.DeleteTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance()) return this;
        if (!other.getDocRefPath().isEmpty()) {
          docRefPath_ = other.docRefPath_;
          onChanged();
        }
        if (other.hasPrecondition()) {
          mergePrecondition(other.getPrecondition());
        }
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object docRefPath_ = "";
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public java.lang.String getDocRefPath() {
        java.lang.Object ref = docRefPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          docRefPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getDocRefPathBytes() {
        java.lang.Object ref = docRefPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docRefPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        docRefPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder clearDocRefPath() {

        docRefPath_ = getDefaultInstance().getDocRefPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of doc
       * </pre>
       *
       * <code>string doc_ref_path = 1;</code>
       */
      public Builder setDocRefPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        docRefPath_ = value;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.Precondition precondition_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder> preconditionBuilder_;
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public boolean hasPrecondition() {
        return preconditionBuilder_ != null || precondition_ != null;
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition getPrecondition() {
        if (preconditionBuilder_ == null) {
          return precondition_ == null ? com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        } else {
          return preconditionBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precondition_ = value;
          onChanged();
        } else {
          preconditionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder setPrecondition(
          com.google.firestore.v1beta1.Precondition.Builder builderForValue) {
        if (preconditionBuilder_ == null) {
          precondition_ = builderForValue.build();
          onChanged();
        } else {
          preconditionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder mergePrecondition(com.google.firestore.v1beta1.Precondition value) {
        if (preconditionBuilder_ == null) {
          if (precondition_ != null) {
            precondition_ =
                com.google.firestore.v1beta1.Precondition.newBuilder(precondition_).mergeFrom(value).buildPartial();
          } else {
            precondition_ = value;
          }
          onChanged();
        } else {
          preconditionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public Builder clearPrecondition() {
        if (preconditionBuilder_ == null) {
          precondition_ = null;
          onChanged();
        } else {
          precondition_ = null;
          preconditionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.Precondition.Builder getPreconditionBuilder() {

        onChanged();
        return getPreconditionFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      public com.google.firestore.v1beta1.PreconditionOrBuilder getPreconditionOrBuilder() {
        if (preconditionBuilder_ != null) {
          return preconditionBuilder_.getMessageOrBuilder();
        } else {
          return precondition_ == null ?
              com.google.firestore.v1beta1.Precondition.getDefaultInstance() : precondition_;
        }
      }
      /**
       * <code>.google.firestore.v1beta1.Precondition precondition = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>
      getPreconditionFieldBuilder() {
        if (preconditionBuilder_ == null) {
          preconditionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.Precondition, com.google.firestore.v1beta1.Precondition.Builder, com.google.firestore.v1beta1.PreconditionOrBuilder>(
              getPrecondition(),
              getParentForChildren(),
              isClean());
          precondition_ = null;
        }
        return preconditionBuilder_;
      }

      private com.google.firestore.v1beta1.CommitRequest request_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public boolean hasRequest() {
        return requestBuilder_ != null || request_ != null;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder setRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
          onChanged();
        } else {
          requestBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder setRequest(
          com.google.firestore.v1beta1.CommitRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
          onChanged();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder mergeRequest(com.google.firestore.v1beta1.CommitRequest value) {
        if (requestBuilder_ == null) {
          if (request_ != null) {
            request_ =
                com.google.firestore.v1beta1.CommitRequest.newBuilder(request_).mergeFrom(value).buildPartial();
          } else {
            request_ = value;
          }
          onChanged();
        } else {
          requestBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public Builder clearRequest() {
        if (requestBuilder_ == null) {
          request_ = null;
          onChanged();
        } else {
          request_ = null;
          requestBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequest.Builder getRequestBuilder() {

        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      public com.google.firestore.v1beta1.CommitRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              com.google.firestore.v1beta1.CommitRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * expected rquest
       * </pre>
       *
       * <code>.google.firestore.v1beta1.CommitRequest request = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>
      getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.CommitRequest, com.google.firestore.v1beta1.CommitRequest.Builder, com.google.firestore.v1beta1.CommitRequestOrBuilder>(
              getRequest(),
              getParentForChildren(),
              isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private boolean isError_ ;
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * call signals an error
       * </pre>
       *
       * <code>bool is_error = 4;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.DeleteTest)
    }

    // @@protoc_insertion_point(class_scope:tests.DeleteTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.DeleteTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DeleteTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetOptionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.SetOption)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * if true, merge all fields ("fields" is ignored).
     * </pre>
     *
     * <code>bool all = 1;</code>
     */
    boolean getAll();

    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>
    getFieldsList();
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index);
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    int getFieldsCount();
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldsOrBuilderList();
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * An option to the DocumentRef.Set call.
   * </pre>
   *
   * Protobuf type {@code tests.SetOption}
   */
  public  static final class SetOption extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.SetOption)
      SetOptionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SetOption.newBuilder() to construct.
    private SetOption(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetOption() {
      all_ = false;
      fields_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SetOption(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              all_ = input.readBool();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                fields_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>();
                mutable_bitField0_ |= 0x00000002;
              }
              fields_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetOption_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetOption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.SetOption.class, com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder.class);
    }

    private int bitField0_;
    public static final int ALL_FIELD_NUMBER = 1;
    private boolean all_;
    /**
     * <pre>
     * if true, merge all fields ("fields" is ignored).
     * </pre>
     *
     * <code>bool all = 1;</code>
     */
    public boolean getAll() {
      return all_;
    }

    public static final int FIELDS_FIELD_NUMBER = 2;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fields_;
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldsList() {
      return fields_;
    }
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <pre>
     * field paths for a Merge option
     * </pre>
     *
     * <code>repeated .tests.FieldPath fields = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (all_ != false) {
        output.writeBool(1, all_);
      }
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(2, fields_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (all_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(1, all_);
      }
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, fields_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.SetOption)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.SetOption other = (com.google.cloud.firestore.conformance.TestDefinition.SetOption) obj;

      boolean result = true;
      result = result && (getAll()
          == other.getAll());
      result = result && getFieldsList()
          .equals(other.getFieldsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ALL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAll());
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.SetOption prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An option to the DocumentRef.Set call.
     * </pre>
     *
     * Protobuf type {@code tests.SetOption}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.SetOption)
        com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetOption_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetOption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.SetOption.class, com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.SetOption.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getFieldsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        all_ = false;

        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_SetOption_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetOption getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetOption build() {
        com.google.cloud.firestore.conformance.TestDefinition.SetOption result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.SetOption buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.SetOption result = new com.google.cloud.firestore.conformance.TestDefinition.SetOption(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.all_ = all_;
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.SetOption) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.SetOption)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.SetOption other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance()) return this;
        if (other.getAll() != false) {
          setAll(other.getAll());
        }
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fieldsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.SetOption parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.SetOption) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean all_ ;
      /**
       * <pre>
       * if true, merge all fields ("fields" is ignored).
       * </pre>
       *
       * <code>bool all = 1;</code>
       */
      public boolean getAll() {
        return all_;
      }
      /**
       * <pre>
       * if true, merge all fields ("fields" is ignored).
       * </pre>
       *
       * <code>bool all = 1;</code>
       */
      public Builder setAll(boolean value) {

        all_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if true, merge all fields ("fields" is ignored).
       * </pre>
       *
       * <code>bool all = 1;</code>
       */
      public Builder clearAll() {

        all_ = false;
        onChanged();
        return this;
      }

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fields_ =
          java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          fields_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fields_);
          bitField0_ |= 0x00000002;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> fieldsBuilder_;

      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder setFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder setFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder addFields(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder addFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder addFields(
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder addFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <pre>
       * field paths for a Merge option
       * </pre>
       *
       * <code>repeated .tests.FieldPath fields = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder>
      getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>(
              fields_,
              ((bitField0_ & 0x00000002) == 0x00000002),
              getParentForChildren(),
              isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.SetOption)
    }

    // @@protoc_insertion_point(class_scope:tests.SetOption)
    private static final com.google.cloud.firestore.conformance.TestDefinition.SetOption DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.SetOption();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.SetOption getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.SetOption getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface QueryTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.QueryTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
     * </pre>
     *
     * <code>string coll_path = 1;</code>
     */
    java.lang.String getCollPath();
    /**
     * <pre>
     * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
     * </pre>
     *
     * <code>string coll_path = 1;</code>
     */
    com.google.protobuf.ByteString
    getCollPathBytes();

    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause>
    getClausesList();
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index);
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    int getClausesCount();
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>
    getClausesOrBuilderList();
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder getClausesOrBuilder(
        int index);

    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    boolean hasQuery();
    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    com.google.firestore.v1beta1.StructuredQuery getQuery();
    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    com.google.firestore.v1beta1.StructuredQueryOrBuilder getQueryOrBuilder();

    /**
     * <code>bool is_error = 4;</code>
     */
    boolean getIsError();
  }
  /**
   * Protobuf type {@code tests.QueryTest}
   */
  public  static final class QueryTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.QueryTest)
      QueryTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use QueryTest.newBuilder() to construct.
    private QueryTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private QueryTest() {
      collPath_ = "";
      clauses_ = java.util.Collections.emptyList();
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private QueryTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              collPath_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                clauses_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Clause>();
                mutable_bitField0_ |= 0x00000002;
              }
              clauses_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Clause.parser(), extensionRegistry));
              break;
            }
            case 26: {
              com.google.firestore.v1beta1.StructuredQuery.Builder subBuilder = null;
              if (query_ != null) {
                subBuilder = query_.toBuilder();
              }
              query_ = input.readMessage(com.google.firestore.v1beta1.StructuredQuery.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(query_);
                query_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          clauses_ = java.util.Collections.unmodifiableList(clauses_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_QueryTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_QueryTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.QueryTest.class, com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder.class);
    }

    private int bitField0_;
    public static final int COLL_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object collPath_;
    /**
     * <pre>
     * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
     * </pre>
     *
     * <code>string coll_path = 1;</code>
     */
    public java.lang.String getCollPath() {
      java.lang.Object ref = collPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        collPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
     * </pre>
     *
     * <code>string coll_path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getCollPathBytes() {
      java.lang.Object ref = collPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        collPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLAUSES_FIELD_NUMBER = 2;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause> clauses_;
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause> getClausesList() {
      return clauses_;
    }
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>
    getClausesOrBuilderList() {
      return clauses_;
    }
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    public int getClausesCount() {
      return clauses_.size();
    }
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index) {
      return clauses_.get(index);
    }
    /**
     * <code>repeated .tests.Clause clauses = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder getClausesOrBuilder(
        int index) {
      return clauses_.get(index);
    }

    public static final int QUERY_FIELD_NUMBER = 3;
    private com.google.firestore.v1beta1.StructuredQuery query_;
    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    public boolean hasQuery() {
      return query_ != null;
    }
    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    public com.google.firestore.v1beta1.StructuredQuery getQuery() {
      return query_ == null ? com.google.firestore.v1beta1.StructuredQuery.getDefaultInstance() : query_;
    }
    /**
     * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
     */
    public com.google.firestore.v1beta1.StructuredQueryOrBuilder getQueryOrBuilder() {
      return getQuery();
    }

    public static final int IS_ERROR_FIELD_NUMBER = 4;
    private boolean isError_;
    /**
     * <code>bool is_error = 4;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getCollPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, collPath_);
      }
      for (int i = 0; i < clauses_.size(); i++) {
        output.writeMessage(2, clauses_.get(i));
      }
      if (query_ != null) {
        output.writeMessage(3, getQuery());
      }
      if (isError_ != false) {
        output.writeBool(4, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getCollPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, collPath_);
      }
      for (int i = 0; i < clauses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, clauses_.get(i));
      }
      if (query_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getQuery());
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.QueryTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.QueryTest other = (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) obj;

      boolean result = true;
      result = result && getCollPath()
          .equals(other.getCollPath());
      result = result && getClausesList()
          .equals(other.getClausesList());
      result = result && (hasQuery() == other.hasQuery());
      if (hasQuery()) {
        result = result && getQuery()
            .equals(other.getQuery());
      }
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + COLL_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getCollPath().hashCode();
      if (getClausesCount() > 0) {
        hash = (37 * hash) + CLAUSES_FIELD_NUMBER;
        hash = (53 * hash) + getClausesList().hashCode();
      }
      if (hasQuery()) {
        hash = (37 * hash) + QUERY_FIELD_NUMBER;
        hash = (53 * hash) + getQuery().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.QueryTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.QueryTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.QueryTest)
        com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_QueryTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_QueryTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.QueryTest.class, com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.QueryTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getClausesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        collPath_ = "";

        if (clausesBuilder_ == null) {
          clauses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          clausesBuilder_.clear();
        }
        if (queryBuilder_ == null) {
          query_ = null;
        } else {
          query_ = null;
          queryBuilder_ = null;
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_QueryTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.QueryTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.QueryTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.QueryTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.QueryTest result = new com.google.cloud.firestore.conformance.TestDefinition.QueryTest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.collPath_ = collPath_;
        if (clausesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            clauses_ = java.util.Collections.unmodifiableList(clauses_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.clauses_ = clauses_;
        } else {
          result.clauses_ = clausesBuilder_.build();
        }
        if (queryBuilder_ == null) {
          result.query_ = query_;
        } else {
          result.query_ = queryBuilder_.build();
        }
        result.isError_ = isError_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.QueryTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.QueryTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.QueryTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance()) return this;
        if (!other.getCollPath().isEmpty()) {
          collPath_ = other.collPath_;
          onChanged();
        }
        if (clausesBuilder_ == null) {
          if (!other.clauses_.isEmpty()) {
            if (clauses_.isEmpty()) {
              clauses_ = other.clauses_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureClausesIsMutable();
              clauses_.addAll(other.clauses_);
            }
            onChanged();
          }
        } else {
          if (!other.clauses_.isEmpty()) {
            if (clausesBuilder_.isEmpty()) {
              clausesBuilder_.dispose();
              clausesBuilder_ = null;
              clauses_ = other.clauses_;
              bitField0_ = (bitField0_ & ~0x00000002);
              clausesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getClausesFieldBuilder() : null;
            } else {
              clausesBuilder_.addAllMessages(other.clauses_);
            }
          }
        }
        if (other.hasQuery()) {
          mergeQuery(other.getQuery());
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.QueryTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object collPath_ = "";
      /**
       * <pre>
       * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
       * </pre>
       *
       * <code>string coll_path = 1;</code>
       */
      public java.lang.String getCollPath() {
        java.lang.Object ref = collPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          collPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
       * </pre>
       *
       * <code>string coll_path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getCollPathBytes() {
        java.lang.Object ref = collPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          collPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
       * </pre>
       *
       * <code>string coll_path = 1;</code>
       */
      public Builder setCollPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        collPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
       * </pre>
       *
       * <code>string coll_path = 1;</code>
       */
      public Builder clearCollPath() {

        collPath_ = getDefaultInstance().getCollPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of collection, e.g. "projects/projectID/databases/(default)/documents/C"
       * </pre>
       *
       * <code>string coll_path = 1;</code>
       */
      public Builder setCollPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        collPath_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause> clauses_ =
          java.util.Collections.emptyList();
      private void ensureClausesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          clauses_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Clause>(clauses_);
          bitField0_ |= 0x00000002;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Clause, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder> clausesBuilder_;

      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause> getClausesList() {
        if (clausesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(clauses_);
        } else {
          return clausesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public int getClausesCount() {
        if (clausesBuilder_ == null) {
          return clauses_.size();
        } else {
          return clausesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index) {
        if (clausesBuilder_ == null) {
          return clauses_.get(index);
        } else {
          return clausesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder setClauses(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Clause value) {
        if (clausesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClausesIsMutable();
          clauses_.set(index, value);
          onChanged();
        } else {
          clausesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder setClauses(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) {
        if (clausesBuilder_ == null) {
          ensureClausesIsMutable();
          clauses_.set(index, builderForValue.build());
          onChanged();
        } else {
          clausesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder addClauses(com.google.cloud.firestore.conformance.TestDefinition.Clause value) {
        if (clausesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClausesIsMutable();
          clauses_.add(value);
          onChanged();
        } else {
          clausesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder addClauses(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Clause value) {
        if (clausesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClausesIsMutable();
          clauses_.add(index, value);
          onChanged();
        } else {
          clausesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder addClauses(
          com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) {
        if (clausesBuilder_ == null) {
          ensureClausesIsMutable();
          clauses_.add(builderForValue.build());
          onChanged();
        } else {
          clausesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder addClauses(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) {
        if (clausesBuilder_ == null) {
          ensureClausesIsMutable();
          clauses_.add(index, builderForValue.build());
          onChanged();
        } else {
          clausesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder addAllClauses(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.Clause> values) {
        if (clausesBuilder_ == null) {
          ensureClausesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, clauses_);
          onChanged();
        } else {
          clausesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder clearClauses() {
        if (clausesBuilder_ == null) {
          clauses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          clausesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public Builder removeClauses(int index) {
        if (clausesBuilder_ == null) {
          ensureClausesIsMutable();
          clauses_.remove(index);
          onChanged();
        } else {
          clausesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder getClausesBuilder(
          int index) {
        return getClausesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder getClausesOrBuilder(
          int index) {
        if (clausesBuilder_ == null) {
          return clauses_.get(index);  } else {
          return clausesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>
      getClausesOrBuilderList() {
        if (clausesBuilder_ != null) {
          return clausesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(clauses_);
        }
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder addClausesBuilder() {
        return getClausesFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder addClausesBuilder(
          int index) {
        return getClausesFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Clause clauses = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder>
      getClausesBuilderList() {
        return getClausesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Clause, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>
      getClausesFieldBuilder() {
        if (clausesBuilder_ == null) {
          clausesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Clause, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>(
              clauses_,
              ((bitField0_ & 0x00000002) == 0x00000002),
              getParentForChildren(),
              isClean());
          clauses_ = null;
        }
        return clausesBuilder_;
      }

      private com.google.firestore.v1beta1.StructuredQuery query_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.StructuredQuery, com.google.firestore.v1beta1.StructuredQuery.Builder, com.google.firestore.v1beta1.StructuredQueryOrBuilder> queryBuilder_;
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public boolean hasQuery() {
        return queryBuilder_ != null || query_ != null;
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public com.google.firestore.v1beta1.StructuredQuery getQuery() {
        if (queryBuilder_ == null) {
          return query_ == null ? com.google.firestore.v1beta1.StructuredQuery.getDefaultInstance() : query_;
        } else {
          return queryBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public Builder setQuery(com.google.firestore.v1beta1.StructuredQuery value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          query_ = value;
          onChanged();
        } else {
          queryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public Builder setQuery(
          com.google.firestore.v1beta1.StructuredQuery.Builder builderForValue) {
        if (queryBuilder_ == null) {
          query_ = builderForValue.build();
          onChanged();
        } else {
          queryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public Builder mergeQuery(com.google.firestore.v1beta1.StructuredQuery value) {
        if (queryBuilder_ == null) {
          if (query_ != null) {
            query_ =
                com.google.firestore.v1beta1.StructuredQuery.newBuilder(query_).mergeFrom(value).buildPartial();
          } else {
            query_ = value;
          }
          onChanged();
        } else {
          queryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public Builder clearQuery() {
        if (queryBuilder_ == null) {
          query_ = null;
          onChanged();
        } else {
          query_ = null;
          queryBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public com.google.firestore.v1beta1.StructuredQuery.Builder getQueryBuilder() {

        onChanged();
        return getQueryFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      public com.google.firestore.v1beta1.StructuredQueryOrBuilder getQueryOrBuilder() {
        if (queryBuilder_ != null) {
          return queryBuilder_.getMessageOrBuilder();
        } else {
          return query_ == null ?
              com.google.firestore.v1beta1.StructuredQuery.getDefaultInstance() : query_;
        }
      }
      /**
       * <code>.google.firestore.v1beta1.StructuredQuery query = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.StructuredQuery, com.google.firestore.v1beta1.StructuredQuery.Builder, com.google.firestore.v1beta1.StructuredQueryOrBuilder>
      getQueryFieldBuilder() {
        if (queryBuilder_ == null) {
          queryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.StructuredQuery, com.google.firestore.v1beta1.StructuredQuery.Builder, com.google.firestore.v1beta1.StructuredQueryOrBuilder>(
              getQuery(),
              getParentForChildren(),
              isClean());
          query_ = null;
        }
        return queryBuilder_;
      }

      private boolean isError_ ;
      /**
       * <code>bool is_error = 4;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <code>bool is_error = 4;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_error = 4;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.QueryTest)
    }

    // @@protoc_insertion_point(class_scope:tests.QueryTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.QueryTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.QueryTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClauseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Clause)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.tests.Select select = 1;</code>
     */
    boolean hasSelect();
    /**
     * <code>.tests.Select select = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Select getSelect();
    /**
     * <code>.tests.Select select = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder getSelectOrBuilder();

    /**
     * <code>.tests.Where where = 2;</code>
     */
    boolean hasWhere();
    /**
     * <code>.tests.Where where = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Where getWhere();
    /**
     * <code>.tests.Where where = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder getWhereOrBuilder();

    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    boolean hasOrderBy();
    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy();
    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder getOrderByOrBuilder();

    /**
     * <code>int32 offset = 4;</code>
     */
    int getOffset();

    /**
     * <code>int32 limit = 5;</code>
     */
    int getLimit();

    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    boolean hasStartAt();
    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt();
    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAtOrBuilder();

    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    boolean hasStartAfter();
    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter();
    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAfterOrBuilder();

    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    boolean hasEndAt();
    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt();
    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndAtOrBuilder();

    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    boolean hasEndBefore();
    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore();
    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder();

    public com.google.cloud.firestore.conformance.TestDefinition.Clause.ClauseCase getClauseCase();
  }
  /**
   * Protobuf type {@code tests.Clause}
   */
  public  static final class Clause extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Clause)
      ClauseOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Clause.newBuilder() to construct.
    private Clause(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Clause() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Clause(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.cloud.firestore.conformance.TestDefinition.Select.Builder subBuilder = null;
              if (clauseCase_ == 1) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Select) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Select.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Select) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 1;
              break;
            }
            case 18: {
              com.google.cloud.firestore.conformance.TestDefinition.Where.Builder subBuilder = null;
              if (clauseCase_ == 2) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Where) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Where.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Where) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 2;
              break;
            }
            case 26: {
              com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder subBuilder = null;
              if (clauseCase_ == 3) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.OrderBy.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 3;
              break;
            }
            case 32: {
              clauseCase_ = 4;
              clause_ = input.readInt32();
              break;
            }
            case 40: {
              clauseCase_ = 5;
              clause_ = input.readInt32();
              break;
            }
            case 50: {
              com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = null;
              if (clauseCase_ == 6) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 6;
              break;
            }
            case 58: {
              com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = null;
              if (clauseCase_ == 7) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 7;
              break;
            }
            case 66: {
              com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = null;
              if (clauseCase_ == 8) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 8;
              break;
            }
            case 74: {
              com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = null;
              if (clauseCase_ == 9) {
                subBuilder = ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_).toBuilder();
              }
              clause_ =
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
                clause_ = subBuilder.buildPartial();
              }
              clauseCase_ = 9;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Clause_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Clause_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Clause.class, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder.class);
    }

    private int clauseCase_ = 0;
    private java.lang.Object clause_;
    public enum ClauseCase
        implements com.google.protobuf.Internal.EnumLite {
      SELECT(1),
      WHERE(2),
      ORDER_BY(3),
      OFFSET(4),
      LIMIT(5),
      START_AT(6),
      START_AFTER(7),
      END_AT(8),
      END_BEFORE(9),
      CLAUSE_NOT_SET(0);
      private final int value;
      private ClauseCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ClauseCase valueOf(int value) {
        return forNumber(value);
      }

      public static ClauseCase forNumber(int value) {
        switch (value) {
          case 1: return SELECT;
          case 2: return WHERE;
          case 3: return ORDER_BY;
          case 4: return OFFSET;
          case 5: return LIMIT;
          case 6: return START_AT;
          case 7: return START_AFTER;
          case 8: return END_AT;
          case 9: return END_BEFORE;
          case 0: return CLAUSE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ClauseCase
    getClauseCase() {
      return ClauseCase.forNumber(
          clauseCase_);
    }

    public static final int SELECT_FIELD_NUMBER = 1;
    /**
     * <code>.tests.Select select = 1;</code>
     */
    public boolean hasSelect() {
      return clauseCase_ == 1;
    }
    /**
     * <code>.tests.Select select = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Select getSelect() {
      if (clauseCase_ == 1) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
    }
    /**
     * <code>.tests.Select select = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder getSelectOrBuilder() {
      if (clauseCase_ == 1) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
    }

    public static final int WHERE_FIELD_NUMBER = 2;
    /**
     * <code>.tests.Where where = 2;</code>
     */
    public boolean hasWhere() {
      return clauseCase_ == 2;
    }
    /**
     * <code>.tests.Where where = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Where getWhere() {
      if (clauseCase_ == 2) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
    }
    /**
     * <code>.tests.Where where = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder getWhereOrBuilder() {
      if (clauseCase_ == 2) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
    }

    public static final int ORDER_BY_FIELD_NUMBER = 3;
    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    public boolean hasOrderBy() {
      return clauseCase_ == 3;
    }
    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy() {
      if (clauseCase_ == 3) {
        return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
    }
    /**
     * <code>.tests.OrderBy order_by = 3;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder getOrderByOrBuilder() {
      if (clauseCase_ == 3) {
        return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    /**
     * <code>int32 offset = 4;</code>
     */
    public int getOffset() {
      if (clauseCase_ == 4) {
        return (java.lang.Integer) clause_;
      }
      return 0;
    }

    public static final int LIMIT_FIELD_NUMBER = 5;
    /**
     * <code>int32 limit = 5;</code>
     */
    public int getLimit() {
      if (clauseCase_ == 5) {
        return (java.lang.Integer) clause_;
      }
      return 0;
    }

    public static final int START_AT_FIELD_NUMBER = 6;
    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    public boolean hasStartAt() {
      return clauseCase_ == 6;
    }
    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt() {
      if (clauseCase_ == 6) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }
    /**
     * <code>.tests.Cursor start_at = 6;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAtOrBuilder() {
      if (clauseCase_ == 6) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }

    public static final int START_AFTER_FIELD_NUMBER = 7;
    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    public boolean hasStartAfter() {
      return clauseCase_ == 7;
    }
    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter() {
      if (clauseCase_ == 7) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }
    /**
     * <code>.tests.Cursor start_after = 7;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAfterOrBuilder() {
      if (clauseCase_ == 7) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }

    public static final int END_AT_FIELD_NUMBER = 8;
    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    public boolean hasEndAt() {
      return clauseCase_ == 8;
    }
    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt() {
      if (clauseCase_ == 8) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }
    /**
     * <code>.tests.Cursor end_at = 8;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndAtOrBuilder() {
      if (clauseCase_ == 8) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }

    public static final int END_BEFORE_FIELD_NUMBER = 9;
    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    public boolean hasEndBefore() {
      return clauseCase_ == 9;
    }
    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore() {
      if (clauseCase_ == 9) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }
    /**
     * <code>.tests.Cursor end_before = 9;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder() {
      if (clauseCase_ == 9) {
        return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
      }
      return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (clauseCase_ == 1) {
        output.writeMessage(1, (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_);
      }
      if (clauseCase_ == 2) {
        output.writeMessage(2, (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_);
      }
      if (clauseCase_ == 3) {
        output.writeMessage(3, (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_);
      }
      if (clauseCase_ == 4) {
        output.writeInt32(
            4, (int)((java.lang.Integer) clause_));
      }
      if (clauseCase_ == 5) {
        output.writeInt32(
            5, (int)((java.lang.Integer) clause_));
      }
      if (clauseCase_ == 6) {
        output.writeMessage(6, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 7) {
        output.writeMessage(7, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 8) {
        output.writeMessage(8, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 9) {
        output.writeMessage(9, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (clauseCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_);
      }
      if (clauseCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_);
      }
      if (clauseCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_);
      }
      if (clauseCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                4, (int)((java.lang.Integer) clause_));
      }
      if (clauseCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                5, (int)((java.lang.Integer) clause_));
      }
      if (clauseCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      if (clauseCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Clause)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Clause other = (com.google.cloud.firestore.conformance.TestDefinition.Clause) obj;

      boolean result = true;
      result = result && getClauseCase().equals(
          other.getClauseCase());
      if (!result) return false;
      switch (clauseCase_) {
        case 1:
          result = result && getSelect()
              .equals(other.getSelect());
          break;
        case 2:
          result = result && getWhere()
              .equals(other.getWhere());
          break;
        case 3:
          result = result && getOrderBy()
              .equals(other.getOrderBy());
          break;
        case 4:
          result = result && (getOffset()
              == other.getOffset());
          break;
        case 5:
          result = result && (getLimit()
              == other.getLimit());
          break;
        case 6:
          result = result && getStartAt()
              .equals(other.getStartAt());
          break;
        case 7:
          result = result && getStartAfter()
              .equals(other.getStartAfter());
          break;
        case 8:
          result = result && getEndAt()
              .equals(other.getEndAt());
          break;
        case 9:
          result = result && getEndBefore()
              .equals(other.getEndBefore());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (clauseCase_) {
        case 1:
          hash = (37 * hash) + SELECT_FIELD_NUMBER;
          hash = (53 * hash) + getSelect().hashCode();
          break;
        case 2:
          hash = (37 * hash) + WHERE_FIELD_NUMBER;
          hash = (53 * hash) + getWhere().hashCode();
          break;
        case 3:
          hash = (37 * hash) + ORDER_BY_FIELD_NUMBER;
          hash = (53 * hash) + getOrderBy().hashCode();
          break;
        case 4:
          hash = (37 * hash) + OFFSET_FIELD_NUMBER;
          hash = (53 * hash) + getOffset();
          break;
        case 5:
          hash = (37 * hash) + LIMIT_FIELD_NUMBER;
          hash = (53 * hash) + getLimit();
          break;
        case 6:
          hash = (37 * hash) + START_AT_FIELD_NUMBER;
          hash = (53 * hash) + getStartAt().hashCode();
          break;
        case 7:
          hash = (37 * hash) + START_AFTER_FIELD_NUMBER;
          hash = (53 * hash) + getStartAfter().hashCode();
          break;
        case 8:
          hash = (37 * hash) + END_AT_FIELD_NUMBER;
          hash = (53 * hash) + getEndAt().hashCode();
          break;
        case 9:
          hash = (37 * hash) + END_BEFORE_FIELD_NUMBER;
          hash = (53 * hash) + getEndBefore().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Clause prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.Clause}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Clause)
        com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Clause_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Clause_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Clause.class, com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Clause.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        clauseCase_ = 0;
        clause_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Clause_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Clause getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Clause build() {
        com.google.cloud.firestore.conformance.TestDefinition.Clause result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Clause buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Clause result = new com.google.cloud.firestore.conformance.TestDefinition.Clause(this);
        if (clauseCase_ == 1) {
          if (selectBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = selectBuilder_.build();
          }
        }
        if (clauseCase_ == 2) {
          if (whereBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = whereBuilder_.build();
          }
        }
        if (clauseCase_ == 3) {
          if (orderByBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = orderByBuilder_.build();
          }
        }
        if (clauseCase_ == 4) {
          result.clause_ = clause_;
        }
        if (clauseCase_ == 5) {
          result.clause_ = clause_;
        }
        if (clauseCase_ == 6) {
          if (startAtBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = startAtBuilder_.build();
          }
        }
        if (clauseCase_ == 7) {
          if (startAfterBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = startAfterBuilder_.build();
          }
        }
        if (clauseCase_ == 8) {
          if (endAtBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = endAtBuilder_.build();
          }
        }
        if (clauseCase_ == 9) {
          if (endBeforeBuilder_ == null) {
            result.clause_ = clause_;
          } else {
            result.clause_ = endBeforeBuilder_.build();
          }
        }
        result.clauseCase_ = clauseCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Clause) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Clause)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Clause other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance()) return this;
        switch (other.getClauseCase()) {
          case SELECT: {
            mergeSelect(other.getSelect());
            break;
          }
          case WHERE: {
            mergeWhere(other.getWhere());
            break;
          }
          case ORDER_BY: {
            mergeOrderBy(other.getOrderBy());
            break;
          }
          case OFFSET: {
            setOffset(other.getOffset());
            break;
          }
          case LIMIT: {
            setLimit(other.getLimit());
            break;
          }
          case START_AT: {
            mergeStartAt(other.getStartAt());
            break;
          }
          case START_AFTER: {
            mergeStartAfter(other.getStartAfter());
            break;
          }
          case END_AT: {
            mergeEndAt(other.getEndAt());
            break;
          }
          case END_BEFORE: {
            mergeEndBefore(other.getEndBefore());
            break;
          }
          case CLAUSE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Clause parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Clause) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int clauseCase_ = 0;
      private java.lang.Object clause_;
      public ClauseCase
      getClauseCase() {
        return ClauseCase.forNumber(
            clauseCase_);
      }

      public Builder clearClause() {
        clauseCase_ = 0;
        clause_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Select, com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder> selectBuilder_;
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public boolean hasSelect() {
        return clauseCase_ == 1;
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Select getSelect() {
        if (selectBuilder_ == null) {
          if (clauseCase_ == 1) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
        } else {
          if (clauseCase_ == 1) {
            return selectBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public Builder setSelect(com.google.cloud.firestore.conformance.TestDefinition.Select value) {
        if (selectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          selectBuilder_.setMessage(value);
        }
        clauseCase_ = 1;
        return this;
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public Builder setSelect(
          com.google.cloud.firestore.conformance.TestDefinition.Select.Builder builderForValue) {
        if (selectBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          selectBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 1;
        return this;
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public Builder mergeSelect(com.google.cloud.firestore.conformance.TestDefinition.Select value) {
        if (selectBuilder_ == null) {
          if (clauseCase_ == 1 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Select.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Select) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 1) {
            selectBuilder_.mergeFrom(value);
          }
          selectBuilder_.setMessage(value);
        }
        clauseCase_ = 1;
        return this;
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public Builder clearSelect() {
        if (selectBuilder_ == null) {
          if (clauseCase_ == 1) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 1) {
            clauseCase_ = 0;
            clause_ = null;
          }
          selectBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Select.Builder getSelectBuilder() {
        return getSelectFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder getSelectOrBuilder() {
        if ((clauseCase_ == 1) && (selectBuilder_ != null)) {
          return selectBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 1) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Select select = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Select, com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder>
      getSelectFieldBuilder() {
        if (selectBuilder_ == null) {
          if (!(clauseCase_ == 1)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
          }
          selectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Select, com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 1;
        onChanged();;
        return selectBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Where, com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder> whereBuilder_;
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public boolean hasWhere() {
        return clauseCase_ == 2;
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Where getWhere() {
        if (whereBuilder_ == null) {
          if (clauseCase_ == 2) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
        } else {
          if (clauseCase_ == 2) {
            return whereBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public Builder setWhere(com.google.cloud.firestore.conformance.TestDefinition.Where value) {
        if (whereBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          whereBuilder_.setMessage(value);
        }
        clauseCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public Builder setWhere(
          com.google.cloud.firestore.conformance.TestDefinition.Where.Builder builderForValue) {
        if (whereBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          whereBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public Builder mergeWhere(com.google.cloud.firestore.conformance.TestDefinition.Where value) {
        if (whereBuilder_ == null) {
          if (clauseCase_ == 2 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Where.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Where) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 2) {
            whereBuilder_.mergeFrom(value);
          }
          whereBuilder_.setMessage(value);
        }
        clauseCase_ = 2;
        return this;
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public Builder clearWhere() {
        if (whereBuilder_ == null) {
          if (clauseCase_ == 2) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 2) {
            clauseCase_ = 0;
            clause_ = null;
          }
          whereBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Where.Builder getWhereBuilder() {
        return getWhereFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder getWhereOrBuilder() {
        if ((clauseCase_ == 2) && (whereBuilder_ != null)) {
          return whereBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 2) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Where where = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Where, com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder>
      getWhereFieldBuilder() {
        if (whereBuilder_ == null) {
          if (!(clauseCase_ == 2)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
          }
          whereBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Where, com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 2;
        onChanged();;
        return whereBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.OrderBy, com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder> orderByBuilder_;
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public boolean hasOrderBy() {
        return clauseCase_ == 3;
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy() {
        if (orderByBuilder_ == null) {
          if (clauseCase_ == 3) {
            return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
        } else {
          if (clauseCase_ == 3) {
            return orderByBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public Builder setOrderBy(com.google.cloud.firestore.conformance.TestDefinition.OrderBy value) {
        if (orderByBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          orderByBuilder_.setMessage(value);
        }
        clauseCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public Builder setOrderBy(
          com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder builderForValue) {
        if (orderByBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          orderByBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public Builder mergeOrderBy(com.google.cloud.firestore.conformance.TestDefinition.OrderBy value) {
        if (orderByBuilder_ == null) {
          if (clauseCase_ == 3 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.OrderBy.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 3) {
            orderByBuilder_.mergeFrom(value);
          }
          orderByBuilder_.setMessage(value);
        }
        clauseCase_ = 3;
        return this;
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public Builder clearOrderBy() {
        if (orderByBuilder_ == null) {
          if (clauseCase_ == 3) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 3) {
            clauseCase_ = 0;
            clause_ = null;
          }
          orderByBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder getOrderByBuilder() {
        return getOrderByFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder getOrderByOrBuilder() {
        if ((clauseCase_ == 3) && (orderByBuilder_ != null)) {
          return orderByBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 3) {
            return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.OrderBy order_by = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.OrderBy, com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder>
      getOrderByFieldBuilder() {
        if (orderByBuilder_ == null) {
          if (!(clauseCase_ == 3)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
          }
          orderByBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.OrderBy, com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 3;
        onChanged();;
        return orderByBuilder_;
      }

      /**
       * <code>int32 offset = 4;</code>
       */
      public int getOffset() {
        if (clauseCase_ == 4) {
          return (java.lang.Integer) clause_;
        }
        return 0;
      }
      /**
       * <code>int32 offset = 4;</code>
       */
      public Builder setOffset(int value) {
        clauseCase_ = 4;
        clause_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 offset = 4;</code>
       */
      public Builder clearOffset() {
        if (clauseCase_ == 4) {
          clauseCase_ = 0;
          clause_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>int32 limit = 5;</code>
       */
      public int getLimit() {
        if (clauseCase_ == 5) {
          return (java.lang.Integer) clause_;
        }
        return 0;
      }
      /**
       * <code>int32 limit = 5;</code>
       */
      public Builder setLimit(int value) {
        clauseCase_ = 5;
        clause_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 limit = 5;</code>
       */
      public Builder clearLimit() {
        if (clauseCase_ == 5) {
          clauseCase_ = 0;
          clause_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> startAtBuilder_;
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public boolean hasStartAt() {
        return clauseCase_ == 6;
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt() {
        if (startAtBuilder_ == null) {
          if (clauseCase_ == 6) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        } else {
          if (clauseCase_ == 6) {
            return startAtBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public Builder setStartAt(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (startAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          startAtBuilder_.setMessage(value);
        }
        clauseCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public Builder setStartAt(
          com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) {
        if (startAtBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          startAtBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public Builder mergeStartAt(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (startAtBuilder_ == null) {
          if (clauseCase_ == 6 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 6) {
            startAtBuilder_.mergeFrom(value);
          }
          startAtBuilder_.setMessage(value);
        }
        clauseCase_ = 6;
        return this;
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public Builder clearStartAt() {
        if (startAtBuilder_ == null) {
          if (clauseCase_ == 6) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 6) {
            clauseCase_ = 0;
            clause_ = null;
          }
          startAtBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder getStartAtBuilder() {
        return getStartAtFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAtOrBuilder() {
        if ((clauseCase_ == 6) && (startAtBuilder_ != null)) {
          return startAtBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 6) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor start_at = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>
      getStartAtFieldBuilder() {
        if (startAtBuilder_ == null) {
          if (!(clauseCase_ == 6)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
          }
          startAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 6;
        onChanged();;
        return startAtBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> startAfterBuilder_;
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public boolean hasStartAfter() {
        return clauseCase_ == 7;
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter() {
        if (startAfterBuilder_ == null) {
          if (clauseCase_ == 7) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        } else {
          if (clauseCase_ == 7) {
            return startAfterBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public Builder setStartAfter(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (startAfterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          startAfterBuilder_.setMessage(value);
        }
        clauseCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public Builder setStartAfter(
          com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) {
        if (startAfterBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          startAfterBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public Builder mergeStartAfter(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (startAfterBuilder_ == null) {
          if (clauseCase_ == 7 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 7) {
            startAfterBuilder_.mergeFrom(value);
          }
          startAfterBuilder_.setMessage(value);
        }
        clauseCase_ = 7;
        return this;
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public Builder clearStartAfter() {
        if (startAfterBuilder_ == null) {
          if (clauseCase_ == 7) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 7) {
            clauseCase_ = 0;
            clause_ = null;
          }
          startAfterBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder getStartAfterBuilder() {
        return getStartAfterFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAfterOrBuilder() {
        if ((clauseCase_ == 7) && (startAfterBuilder_ != null)) {
          return startAfterBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 7) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor start_after = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>
      getStartAfterFieldBuilder() {
        if (startAfterBuilder_ == null) {
          if (!(clauseCase_ == 7)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
          }
          startAfterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 7;
        onChanged();;
        return startAfterBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> endAtBuilder_;
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public boolean hasEndAt() {
        return clauseCase_ == 8;
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt() {
        if (endAtBuilder_ == null) {
          if (clauseCase_ == 8) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        } else {
          if (clauseCase_ == 8) {
            return endAtBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public Builder setEndAt(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (endAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          endAtBuilder_.setMessage(value);
        }
        clauseCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public Builder setEndAt(
          com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) {
        if (endAtBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          endAtBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public Builder mergeEndAt(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (endAtBuilder_ == null) {
          if (clauseCase_ == 8 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 8) {
            endAtBuilder_.mergeFrom(value);
          }
          endAtBuilder_.setMessage(value);
        }
        clauseCase_ = 8;
        return this;
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public Builder clearEndAt() {
        if (endAtBuilder_ == null) {
          if (clauseCase_ == 8) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 8) {
            clauseCase_ = 0;
            clause_ = null;
          }
          endAtBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder getEndAtBuilder() {
        return getEndAtFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndAtOrBuilder() {
        if ((clauseCase_ == 8) && (endAtBuilder_ != null)) {
          return endAtBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 8) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor end_at = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>
      getEndAtFieldBuilder() {
        if (endAtBuilder_ == null) {
          if (!(clauseCase_ == 8)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
          }
          endAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 8;
        onChanged();;
        return endAtBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> endBeforeBuilder_;
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public boolean hasEndBefore() {
        return clauseCase_ == 9;
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore() {
        if (endBeforeBuilder_ == null) {
          if (clauseCase_ == 9) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        } else {
          if (clauseCase_ == 9) {
            return endBeforeBuilder_.getMessage();
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public Builder setEndBefore(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (endBeforeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clause_ = value;
          onChanged();
        } else {
          endBeforeBuilder_.setMessage(value);
        }
        clauseCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public Builder setEndBefore(
          com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) {
        if (endBeforeBuilder_ == null) {
          clause_ = builderForValue.build();
          onChanged();
        } else {
          endBeforeBuilder_.setMessage(builderForValue.build());
        }
        clauseCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public Builder mergeEndBefore(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) {
        if (endBeforeBuilder_ == null) {
          if (clauseCase_ == 9 &&
              clause_ != com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_)
                .mergeFrom(value).buildPartial();
          } else {
            clause_ = value;
          }
          onChanged();
        } else {
          if (clauseCase_ == 9) {
            endBeforeBuilder_.mergeFrom(value);
          }
          endBeforeBuilder_.setMessage(value);
        }
        clauseCase_ = 9;
        return this;
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public Builder clearEndBefore() {
        if (endBeforeBuilder_ == null) {
          if (clauseCase_ == 9) {
            clauseCase_ = 0;
            clause_ = null;
            onChanged();
          }
        } else {
          if (clauseCase_ == 9) {
            clauseCase_ = 0;
            clause_ = null;
          }
          endBeforeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder getEndBeforeBuilder() {
        return getEndBeforeFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder() {
        if ((clauseCase_ == 9) && (endBeforeBuilder_ != null)) {
          return endBeforeBuilder_.getMessageOrBuilder();
        } else {
          if (clauseCase_ == 9) {
            return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_;
          }
          return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
        }
      }
      /**
       * <code>.tests.Cursor end_before = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>
      getEndBeforeFieldBuilder() {
        if (endBeforeBuilder_ == null) {
          if (!(clauseCase_ == 9)) {
            clause_ = com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
          }
          endBeforeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Cursor, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>(
              (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_,
              getParentForChildren(),
              isClean());
          clause_ = null;
        }
        clauseCase_ = 9;
        onChanged();;
        return endBeforeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Clause)
    }

    // @@protoc_insertion_point(class_scope:tests.Clause)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Clause DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Clause();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Clause getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Clause getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SelectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Select)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>
    getFieldsList();
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index);
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    int getFieldsCount();
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldsOrBuilderList();
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code tests.Select}
   */
  public  static final class Select extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Select)
      SelectOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Select.newBuilder() to construct.
    private Select(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Select() {
      fields_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Select(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fields_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>();
                mutable_bitField0_ |= 0x00000001;
              }
              fields_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Select_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Select_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Select.class, com.google.cloud.firestore.conformance.TestDefinition.Select.Builder.class);
    }

    public static final int FIELDS_FIELD_NUMBER = 1;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fields_;
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldsList() {
      return fields_;
    }
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
    getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <code>repeated .tests.FieldPath fields = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, fields_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Select)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Select other = (com.google.cloud.firestore.conformance.TestDefinition.Select) obj;

      boolean result = true;
      result = result && getFieldsList()
          .equals(other.getFieldsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Select prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.Select}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Select)
        com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Select_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Select_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Select.class, com.google.cloud.firestore.conformance.TestDefinition.Select.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Select.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getFieldsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Select_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Select getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Select build() {
        com.google.cloud.firestore.conformance.TestDefinition.Select result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Select buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Select result = new com.google.cloud.firestore.conformance.TestDefinition.Select(this);
        int from_bitField0_ = bitField0_;
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Select) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Select)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Select other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance()) return this;
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fieldsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Select parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Select) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> fields_ =
          java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fields_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fields_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> fieldsBuilder_;

      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder setFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder setFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder addFields(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder addFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder addFields(
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder addFields(
          int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.FieldPath fields = 1;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder>
      getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>(
              fields_,
              ((bitField0_ & 0x00000001) == 0x00000001),
              getParentForChildren(),
              isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Select)
    }

    // @@protoc_insertion_point(class_scope:tests.Select)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Select DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Select();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Select getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Select getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WhereOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Where)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    boolean hasPath();
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath();
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder();

    /**
     * <code>string op = 2;</code>
     */
    java.lang.String getOp();
    /**
     * <code>string op = 2;</code>
     */
    com.google.protobuf.ByteString
    getOpBytes();

    /**
     * <code>string json_value = 3;</code>
     */
    java.lang.String getJsonValue();
    /**
     * <code>string json_value = 3;</code>
     */
    com.google.protobuf.ByteString
    getJsonValueBytes();
  }
  /**
   * Protobuf type {@code tests.Where}
   */
  public  static final class Where extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Where)
      WhereOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Where.newBuilder() to construct.
    private Where(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Where() {
      op_ = "";
      jsonValue_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Where(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder subBuilder = null;
              if (path_ != null) {
                subBuilder = path_.toBuilder();
              }
              path_ = input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(path_);
                path_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              op_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              jsonValue_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Where_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Where_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Where.class, com.google.cloud.firestore.conformance.TestDefinition.Where.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_;
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public boolean hasPath() {
      return path_ != null;
    }
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() {
      return path_ == null ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
    }
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder() {
      return getPath();
    }

    public static final int OP_FIELD_NUMBER = 2;
    private volatile java.lang.Object op_;
    /**
     * <code>string op = 2;</code>
     */
    public java.lang.String getOp() {
      java.lang.Object ref = op_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        op_ = s;
        return s;
      }
    }
    /**
     * <code>string op = 2;</code>
     */
    public com.google.protobuf.ByteString
    getOpBytes() {
      java.lang.Object ref = op_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        op_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int JSON_VALUE_FIELD_NUMBER = 3;
    private volatile java.lang.Object jsonValue_;
    /**
     * <code>string json_value = 3;</code>
     */
    public java.lang.String getJsonValue() {
      java.lang.Object ref = jsonValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        jsonValue_ = s;
        return s;
      }
    }
    /**
     * <code>string json_value = 3;</code>
     */
    public com.google.protobuf.ByteString
    getJsonValueBytes() {
      java.lang.Object ref = jsonValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (path_ != null) {
        output.writeMessage(1, getPath());
      }
      if (!getOpBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, op_);
      }
      if (!getJsonValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, jsonValue_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (path_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getPath());
      }
      if (!getOpBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, op_);
      }
      if (!getJsonValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, jsonValue_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Where)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Where other = (com.google.cloud.firestore.conformance.TestDefinition.Where) obj;

      boolean result = true;
      result = result && (hasPath() == other.hasPath());
      if (hasPath()) {
        result = result && getPath()
            .equals(other.getPath());
      }
      result = result && getOp()
          .equals(other.getOp());
      result = result && getJsonValue()
          .equals(other.getJsonValue());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (37 * hash) + OP_FIELD_NUMBER;
      hash = (53 * hash) + getOp().hashCode();
      hash = (37 * hash) + JSON_VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getJsonValue().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Where prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.Where}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Where)
        com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Where_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Where_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Where.class, com.google.cloud.firestore.conformance.TestDefinition.Where.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Where.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (pathBuilder_ == null) {
          path_ = null;
        } else {
          path_ = null;
          pathBuilder_ = null;
        }
        op_ = "";

        jsonValue_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Where_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Where getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Where build() {
        com.google.cloud.firestore.conformance.TestDefinition.Where result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Where buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Where result = new com.google.cloud.firestore.conformance.TestDefinition.Where(this);
        if (pathBuilder_ == null) {
          result.path_ = path_;
        } else {
          result.path_ = pathBuilder_.build();
        }
        result.op_ = op_;
        result.jsonValue_ = jsonValue_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Where) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Where)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Where other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance()) return this;
        if (other.hasPath()) {
          mergePath(other.getPath());
        }
        if (!other.getOp().isEmpty()) {
          op_ = other.op_;
          onChanged();
        }
        if (!other.getJsonValue().isEmpty()) {
          jsonValue_ = other.jsonValue_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Where parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Where) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> pathBuilder_;
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public boolean hasPath() {
        return pathBuilder_ != null || path_ != null;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() {
        if (pathBuilder_ == null) {
          return path_ == null ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
        } else {
          return pathBuilder_.getMessage();
        }
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder setPath(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (pathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          path_ = value;
          onChanged();
        } else {
          pathBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder setPath(
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (pathBuilder_ == null) {
          path_ = builderForValue.build();
          onChanged();
        } else {
          pathBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder mergePath(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (pathBuilder_ == null) {
          if (path_ != null) {
            path_ =
                com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder(path_).mergeFrom(value).buildPartial();
          } else {
            path_ = value;
          }
          onChanged();
        } else {
          pathBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder clearPath() {
        if (pathBuilder_ == null) {
          path_ = null;
          onChanged();
        } else {
          path_ = null;
          pathBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder getPathBuilder() {

        onChanged();
        return getPathFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder() {
        if (pathBuilder_ != null) {
          return pathBuilder_.getMessageOrBuilder();
        } else {
          return path_ == null ?
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
        }
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getPathFieldBuilder() {
        if (pathBuilder_ == null) {
          pathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>(
              getPath(),
              getParentForChildren(),
              isClean());
          path_ = null;
        }
        return pathBuilder_;
      }

      private java.lang.Object op_ = "";
      /**
       * <code>string op = 2;</code>
       */
      public java.lang.String getOp() {
        java.lang.Object ref = op_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          op_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string op = 2;</code>
       */
      public com.google.protobuf.ByteString
      getOpBytes() {
        java.lang.Object ref = op_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          op_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string op = 2;</code>
       */
      public Builder setOp(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        op_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string op = 2;</code>
       */
      public Builder clearOp() {

        op_ = getDefaultInstance().getOp();
        onChanged();
        return this;
      }
      /**
       * <code>string op = 2;</code>
       */
      public Builder setOpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        op_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object jsonValue_ = "";
      /**
       * <code>string json_value = 3;</code>
       */
      public java.lang.String getJsonValue() {
        java.lang.Object ref = jsonValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          jsonValue_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string json_value = 3;</code>
       */
      public com.google.protobuf.ByteString
      getJsonValueBytes() {
        java.lang.Object ref = jsonValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string json_value = 3;</code>
       */
      public Builder setJsonValue(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        jsonValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string json_value = 3;</code>
       */
      public Builder clearJsonValue() {

        jsonValue_ = getDefaultInstance().getJsonValue();
        onChanged();
        return this;
      }
      /**
       * <code>string json_value = 3;</code>
       */
      public Builder setJsonValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        jsonValue_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Where)
    }

    // @@protoc_insertion_point(class_scope:tests.Where)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Where DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Where();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Where getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Where getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OrderByOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.OrderBy)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    boolean hasPath();
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath();
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder();

    /**
     * <pre>
     * "asc" or "desc"
     * </pre>
     *
     * <code>string direction = 2;</code>
     */
    java.lang.String getDirection();
    /**
     * <pre>
     * "asc" or "desc"
     * </pre>
     *
     * <code>string direction = 2;</code>
     */
    com.google.protobuf.ByteString
    getDirectionBytes();
  }
  /**
   * Protobuf type {@code tests.OrderBy}
   */
  public  static final class OrderBy extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.OrderBy)
      OrderByOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use OrderBy.newBuilder() to construct.
    private OrderBy(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OrderBy() {
      direction_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private OrderBy(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder subBuilder = null;
              if (path_ != null) {
                subBuilder = path_.toBuilder();
              }
              path_ = input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(path_);
                path_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              direction_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_OrderBy_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_OrderBy_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.OrderBy.class, com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_;
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public boolean hasPath() {
      return path_ != null;
    }
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() {
      return path_ == null ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
    }
    /**
     * <code>.tests.FieldPath path = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder() {
      return getPath();
    }

    public static final int DIRECTION_FIELD_NUMBER = 2;
    private volatile java.lang.Object direction_;
    /**
     * <pre>
     * "asc" or "desc"
     * </pre>
     *
     * <code>string direction = 2;</code>
     */
    public java.lang.String getDirection() {
      java.lang.Object ref = direction_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        direction_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * "asc" or "desc"
     * </pre>
     *
     * <code>string direction = 2;</code>
     */
    public com.google.protobuf.ByteString
    getDirectionBytes() {
      java.lang.Object ref = direction_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        direction_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (path_ != null) {
        output.writeMessage(1, getPath());
      }
      if (!getDirectionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, direction_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (path_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getPath());
      }
      if (!getDirectionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, direction_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.OrderBy)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.OrderBy other = (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) obj;

      boolean result = true;
      result = result && (hasPath() == other.hasPath());
      if (hasPath()) {
        result = result && getPath()
            .equals(other.getPath());
      }
      result = result && getDirection()
          .equals(other.getDirection());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (37 * hash) + DIRECTION_FIELD_NUMBER;
      hash = (53 * hash) + getDirection().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.OrderBy prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.OrderBy}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.OrderBy)
        com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_OrderBy_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_OrderBy_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.OrderBy.class, com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.OrderBy.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (pathBuilder_ == null) {
          path_ = null;
        } else {
          path_ = null;
          pathBuilder_ = null;
        }
        direction_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_OrderBy_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.OrderBy build() {
        com.google.cloud.firestore.conformance.TestDefinition.OrderBy result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.OrderBy buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.OrderBy result = new com.google.cloud.firestore.conformance.TestDefinition.OrderBy(this);
        if (pathBuilder_ == null) {
          result.path_ = path_;
        } else {
          result.path_ = pathBuilder_.build();
        }
        result.direction_ = direction_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.OrderBy) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.OrderBy)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.OrderBy other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance()) return this;
        if (other.hasPath()) {
          mergePath(other.getPath());
        }
        if (!other.getDirection().isEmpty()) {
          direction_ = other.direction_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.OrderBy parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> pathBuilder_;
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public boolean hasPath() {
        return pathBuilder_ != null || path_ != null;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() {
        if (pathBuilder_ == null) {
          return path_ == null ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
        } else {
          return pathBuilder_.getMessage();
        }
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder setPath(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (pathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          path_ = value;
          onChanged();
        } else {
          pathBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder setPath(
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) {
        if (pathBuilder_ == null) {
          path_ = builderForValue.build();
          onChanged();
        } else {
          pathBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder mergePath(com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) {
        if (pathBuilder_ == null) {
          if (path_ != null) {
            path_ =
                com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder(path_).mergeFrom(value).buildPartial();
          } else {
            path_ = value;
          }
          onChanged();
        } else {
          pathBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public Builder clearPath() {
        if (pathBuilder_ == null) {
          path_ = null;
          onChanged();
        } else {
          path_ = null;
          pathBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder getPathBuilder() {

        onChanged();
        return getPathFieldBuilder().getBuilder();
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder() {
        if (pathBuilder_ != null) {
          return pathBuilder_.getMessageOrBuilder();
        } else {
          return path_ == null ?
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() : path_;
        }
      }
      /**
       * <code>.tests.FieldPath path = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>
      getPathFieldBuilder() {
        if (pathBuilder_ == null) {
          pathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>(
              getPath(),
              getParentForChildren(),
              isClean());
          path_ = null;
        }
        return pathBuilder_;
      }

      private java.lang.Object direction_ = "";
      /**
       * <pre>
       * "asc" or "desc"
       * </pre>
       *
       * <code>string direction = 2;</code>
       */
      public java.lang.String getDirection() {
        java.lang.Object ref = direction_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          direction_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * "asc" or "desc"
       * </pre>
       *
       * <code>string direction = 2;</code>
       */
      public com.google.protobuf.ByteString
      getDirectionBytes() {
        java.lang.Object ref = direction_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          direction_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * "asc" or "desc"
       * </pre>
       *
       * <code>string direction = 2;</code>
       */
      public Builder setDirection(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        direction_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * "asc" or "desc"
       * </pre>
       *
       * <code>string direction = 2;</code>
       */
      public Builder clearDirection() {

        direction_ = getDefaultInstance().getDirection();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * "asc" or "desc"
       * </pre>
       *
       * <code>string direction = 2;</code>
       */
      public Builder setDirectionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        direction_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.OrderBy)
    }

    // @@protoc_insertion_point(class_scope:tests.OrderBy)
    private static final com.google.cloud.firestore.conformance.TestDefinition.OrderBy DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.OrderBy();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CursorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Cursor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    boolean hasDocSnapshot();
    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot();
    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder();

    /**
     * <code>repeated string json_values = 2;</code>
     */
    java.util.List<java.lang.String>
    getJsonValuesList();
    /**
     * <code>repeated string json_values = 2;</code>
     */
    int getJsonValuesCount();
    /**
     * <code>repeated string json_values = 2;</code>
     */
    java.lang.String getJsonValues(int index);
    /**
     * <code>repeated string json_values = 2;</code>
     */
    com.google.protobuf.ByteString
    getJsonValuesBytes(int index);
  }
  /**
   * Protobuf type {@code tests.Cursor}
   */
  public  static final class Cursor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Cursor)
      CursorOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Cursor.newBuilder() to construct.
    private Cursor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Cursor() {
      jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Cursor(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder subBuilder = null;
              if (docSnapshot_ != null) {
                subBuilder = docSnapshot_.toBuilder();
              }
              docSnapshot_ = input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(docSnapshot_);
                docSnapshot_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                jsonValues_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              jsonValues_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          jsonValues_ = jsonValues_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Cursor_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Cursor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Cursor.class, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder.class);
    }

    private int bitField0_;
    public static final int DOC_SNAPSHOT_FIELD_NUMBER = 1;
    private com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot docSnapshot_;
    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    public boolean hasDocSnapshot() {
      return docSnapshot_ != null;
    }
    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot() {
      return docSnapshot_ == null ? com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance() : docSnapshot_;
    }
    /**
     * <pre>
     * one of:
     * </pre>
     *
     * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder() {
      return getDocSnapshot();
    }

    public static final int JSON_VALUES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList jsonValues_;
    /**
     * <code>repeated string json_values = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
    getJsonValuesList() {
      return jsonValues_;
    }
    /**
     * <code>repeated string json_values = 2;</code>
     */
    public int getJsonValuesCount() {
      return jsonValues_.size();
    }
    /**
     * <code>repeated string json_values = 2;</code>
     */
    public java.lang.String getJsonValues(int index) {
      return jsonValues_.get(index);
    }
    /**
     * <code>repeated string json_values = 2;</code>
     */
    public com.google.protobuf.ByteString
    getJsonValuesBytes(int index) {
      return jsonValues_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (docSnapshot_ != null) {
        output.writeMessage(1, getDocSnapshot());
      }
      for (int i = 0; i < jsonValues_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, jsonValues_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (docSnapshot_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDocSnapshot());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < jsonValues_.size(); i++) {
          dataSize += computeStringSizeNoTag(jsonValues_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getJsonValuesList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Cursor)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Cursor other = (com.google.cloud.firestore.conformance.TestDefinition.Cursor) obj;

      boolean result = true;
      result = result && (hasDocSnapshot() == other.hasDocSnapshot());
      if (hasDocSnapshot()) {
        result = result && getDocSnapshot()
            .equals(other.getDocSnapshot());
      }
      result = result && getJsonValuesList()
          .equals(other.getJsonValuesList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDocSnapshot()) {
        hash = (37 * hash) + DOC_SNAPSHOT_FIELD_NUMBER;
        hash = (53 * hash) + getDocSnapshot().hashCode();
      }
      if (getJsonValuesCount() > 0) {
        hash = (37 * hash) + JSON_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getJsonValuesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Cursor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.Cursor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Cursor)
        com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Cursor_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Cursor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Cursor.class, com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (docSnapshotBuilder_ == null) {
          docSnapshot_ = null;
        } else {
          docSnapshot_ = null;
          docSnapshotBuilder_ = null;
        }
        jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Cursor_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Cursor getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Cursor build() {
        com.google.cloud.firestore.conformance.TestDefinition.Cursor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Cursor buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Cursor result = new com.google.cloud.firestore.conformance.TestDefinition.Cursor(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (docSnapshotBuilder_ == null) {
          result.docSnapshot_ = docSnapshot_;
        } else {
          result.docSnapshot_ = docSnapshotBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          jsonValues_ = jsonValues_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.jsonValues_ = jsonValues_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Cursor) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Cursor other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) return this;
        if (other.hasDocSnapshot()) {
          mergeDocSnapshot(other.getDocSnapshot());
        }
        if (!other.jsonValues_.isEmpty()) {
          if (jsonValues_.isEmpty()) {
            jsonValues_ = other.jsonValues_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureJsonValuesIsMutable();
            jsonValues_.addAll(other.jsonValues_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Cursor parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Cursor) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot docSnapshot_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder> docSnapshotBuilder_;
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public boolean hasDocSnapshot() {
        return docSnapshotBuilder_ != null || docSnapshot_ != null;
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot() {
        if (docSnapshotBuilder_ == null) {
          return docSnapshot_ == null ? com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance() : docSnapshot_;
        } else {
          return docSnapshotBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public Builder setDocSnapshot(com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot value) {
        if (docSnapshotBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          docSnapshot_ = value;
          onChanged();
        } else {
          docSnapshotBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public Builder setDocSnapshot(
          com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder builderForValue) {
        if (docSnapshotBuilder_ == null) {
          docSnapshot_ = builderForValue.build();
          onChanged();
        } else {
          docSnapshotBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public Builder mergeDocSnapshot(com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot value) {
        if (docSnapshotBuilder_ == null) {
          if (docSnapshot_ != null) {
            docSnapshot_ =
                com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.newBuilder(docSnapshot_).mergeFrom(value).buildPartial();
          } else {
            docSnapshot_ = value;
          }
          onChanged();
        } else {
          docSnapshotBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public Builder clearDocSnapshot() {
        if (docSnapshotBuilder_ == null) {
          docSnapshot_ = null;
          onChanged();
        } else {
          docSnapshot_ = null;
          docSnapshotBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder getDocSnapshotBuilder() {

        onChanged();
        return getDocSnapshotFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder() {
        if (docSnapshotBuilder_ != null) {
          return docSnapshotBuilder_.getMessageOrBuilder();
        } else {
          return docSnapshot_ == null ?
              com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance() : docSnapshot_;
        }
      }
      /**
       * <pre>
       * one of:
       * </pre>
       *
       * <code>.tests.DocSnapshot doc_snapshot = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder>
      getDocSnapshotFieldBuilder() {
        if (docSnapshotBuilder_ == null) {
          docSnapshotBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder>(
              getDocSnapshot(),
              getParentForChildren(),
              isClean());
          docSnapshot_ = null;
        }
        return docSnapshotBuilder_;
      }

      private com.google.protobuf.LazyStringList jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureJsonValuesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          jsonValues_ = new com.google.protobuf.LazyStringArrayList(jsonValues_);
          bitField0_ |= 0x00000002;
        }
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
      getJsonValuesList() {
        return jsonValues_.getUnmodifiableView();
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public int getJsonValuesCount() {
        return jsonValues_.size();
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public java.lang.String getJsonValues(int index) {
        return jsonValues_.get(index);
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public com.google.protobuf.ByteString
      getJsonValuesBytes(int index) {
        return jsonValues_.getByteString(index);
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public Builder setJsonValues(
          int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureJsonValuesIsMutable();
        jsonValues_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public Builder addJsonValues(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureJsonValuesIsMutable();
        jsonValues_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public Builder addAllJsonValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureJsonValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, jsonValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public Builder clearJsonValues() {
        jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string json_values = 2;</code>
       */
      public Builder addJsonValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureJsonValuesIsMutable();
        jsonValues_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Cursor)
    }

    // @@protoc_insertion_point(class_scope:tests.Cursor)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Cursor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Cursor();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Cursor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Cursor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DocSnapshotOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.DocSnapshot)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string path = 1;</code>
     */
    java.lang.String getPath();
    /**
     * <code>string path = 1;</code>
     */
    com.google.protobuf.ByteString
    getPathBytes();

    /**
     * <code>string json_data = 2;</code>
     */
    java.lang.String getJsonData();
    /**
     * <code>string json_data = 2;</code>
     */
    com.google.protobuf.ByteString
    getJsonDataBytes();
  }
  /**
   * Protobuf type {@code tests.DocSnapshot}
   */
  public  static final class DocSnapshot extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.DocSnapshot)
      DocSnapshotOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DocSnapshot.newBuilder() to construct.
    private DocSnapshot(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DocSnapshot() {
      path_ = "";
      jsonData_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DocSnapshot(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              path_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              jsonData_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocSnapshot_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocSnapshot_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.class, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <code>string path = 1;</code>
     */
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <code>string path = 1;</code>
     */
    public com.google.protobuf.ByteString
    getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int JSON_DATA_FIELD_NUMBER = 2;
    private volatile java.lang.Object jsonData_;
    /**
     * <code>string json_data = 2;</code>
     */
    public java.lang.String getJsonData() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        jsonData_ = s;
        return s;
      }
    }
    /**
     * <code>string json_data = 2;</code>
     */
    public com.google.protobuf.ByteString
    getJsonDataBytes() {
      java.lang.Object ref = jsonData_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonData_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (!getPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!getJsonDataBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, jsonData_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!getJsonDataBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, jsonData_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot other = (com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) obj;

      boolean result = true;
      result = result && getPath()
          .equals(other.getPath());
      result = result && getJsonData()
          .equals(other.getJsonData());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + JSON_DATA_FIELD_NUMBER;
      hash = (53 * hash) + getJsonData().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.DocSnapshot}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.DocSnapshot)
        com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocSnapshot_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocSnapshot_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.class, com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        path_ = "";

        jsonData_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocSnapshot_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot build() {
        com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot result = new com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot(this);
        result.path_ = path_;
        result.jsonData_ = jsonData_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (!other.getJsonData().isEmpty()) {
          jsonData_ = other.jsonData_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <code>string path = 1;</code>
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string path = 1;</code>
       */
      public com.google.protobuf.ByteString
      getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string path = 1;</code>
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string path = 1;</code>
       */
      public Builder clearPath() {

        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <code>string path = 1;</code>
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        path_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object jsonData_ = "";
      /**
       * <code>string json_data = 2;</code>
       */
      public java.lang.String getJsonData() {
        java.lang.Object ref = jsonData_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          jsonData_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string json_data = 2;</code>
       */
      public com.google.protobuf.ByteString
      getJsonDataBytes() {
        java.lang.Object ref = jsonData_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonData_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string json_data = 2;</code>
       */
      public Builder setJsonData(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        jsonData_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string json_data = 2;</code>
       */
      public Builder clearJsonData() {

        jsonData_ = getDefaultInstance().getJsonData();
        onChanged();
        return this;
      }
      /**
       * <code>string json_data = 2;</code>
       */
      public Builder setJsonDataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        jsonData_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.DocSnapshot)
    }

    // @@protoc_insertion_point(class_scope:tests.DocSnapshot)
    private static final com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FieldPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.FieldPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string field = 1;</code>
     */
    java.util.List<java.lang.String>
    getFieldList();
    /**
     * <code>repeated string field = 1;</code>
     */
    int getFieldCount();
    /**
     * <code>repeated string field = 1;</code>
     */
    java.lang.String getField(int index);
    /**
     * <code>repeated string field = 1;</code>
     */
    com.google.protobuf.ByteString
    getFieldBytes(int index);
  }
  /**
   * Protobuf type {@code tests.FieldPath}
   */
  public  static final class FieldPath extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.FieldPath)
      FieldPathOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use FieldPath.newBuilder() to construct.
    private FieldPath(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FieldPath() {
      field_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FieldPath(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                field_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              field_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          field_ = field_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_FieldPath_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_FieldPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.FieldPath.class, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder.class);
    }

    public static final int FIELD_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList field_;
    /**
     * <code>repeated string field = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
    getFieldList() {
      return field_;
    }
    /**
     * <code>repeated string field = 1;</code>
     */
    public int getFieldCount() {
      return field_.size();
    }
    /**
     * <code>repeated string field = 1;</code>
     */
    public java.lang.String getField(int index) {
      return field_.get(index);
    }
    /**
     * <code>repeated string field = 1;</code>
     */
    public com.google.protobuf.ByteString
    getFieldBytes(int index) {
      return field_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      for (int i = 0; i < field_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, field_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < field_.size(); i++) {
          dataSize += computeStringSizeNoTag(field_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getFieldList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.FieldPath)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.FieldPath other = (com.google.cloud.firestore.conformance.TestDefinition.FieldPath) obj;

      boolean result = true;
      result = result && getFieldList()
          .equals(other.getFieldList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFieldCount() > 0) {
        hash = (37 * hash) + FIELD_FIELD_NUMBER;
        hash = (53 * hash) + getFieldList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.FieldPath prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.FieldPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.FieldPath)
        com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_FieldPath_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_FieldPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.FieldPath.class, com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        field_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_FieldPath_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath build() {
        com.google.cloud.firestore.conformance.TestDefinition.FieldPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.FieldPath buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.FieldPath result = new com.google.cloud.firestore.conformance.TestDefinition.FieldPath(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          field_ = field_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.field_ = field_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.FieldPath) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.FieldPath)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.FieldPath other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance()) return this;
        if (!other.field_.isEmpty()) {
          if (field_.isEmpty()) {
            field_ = other.field_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureFieldIsMutable();
            field_.addAll(other.field_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.FieldPath parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.FieldPath) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList field_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFieldIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          field_ = new com.google.protobuf.LazyStringArrayList(field_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
      getFieldList() {
        return field_.getUnmodifiableView();
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public int getFieldCount() {
        return field_.size();
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public java.lang.String getField(int index) {
        return field_.get(index);
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public com.google.protobuf.ByteString
      getFieldBytes(int index) {
        return field_.getByteString(index);
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public Builder setField(
          int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFieldIsMutable();
        field_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public Builder addField(
          java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFieldIsMutable();
        field_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public Builder addAllField(
          java.lang.Iterable<java.lang.String> values) {
        ensureFieldIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, field_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public Builder clearField() {
        field_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string field = 1;</code>
       */
      public Builder addFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureFieldIsMutable();
        field_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.FieldPath)
    }

    // @@protoc_insertion_point(class_scope:tests.FieldPath)
    private static final com.google.cloud.firestore.conformance.TestDefinition.FieldPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.FieldPath();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ListenTestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.ListenTest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    java.util.List<com.google.firestore.v1beta1.ListenResponse>
    getResponsesList();
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    com.google.firestore.v1beta1.ListenResponse getResponses(int index);
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    int getResponsesCount();
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    java.util.List<? extends com.google.firestore.v1beta1.ListenResponseOrBuilder>
    getResponsesOrBuilderList();
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    com.google.firestore.v1beta1.ListenResponseOrBuilder getResponsesOrBuilder(
        int index);

    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot>
    getSnapshotsList();
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots(int index);
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    int getSnapshotsCount();
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>
    getSnapshotsOrBuilderList();
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder(
        int index);

    /**
     * <code>bool is_error = 3;</code>
     */
    boolean getIsError();
  }
  /**
   * <pre>
   * A test of the Listen streaming RPC (a.k.a. FireStore watch).
   * If the sequence of responses is provided to the implementation,
   * it should produce the sequence of snapshots.
   * If is_error is true, an error should occur after the snapshots.
   * The tests assume that the query is
   * Collection("projects/projectID/databases/(default)/documents/C").OrderBy("a", Ascending)
   * The watch target ID used in these tests is 1. Test interpreters
   * should either change their client's ID for testing,
   * or change the ID in the tests before running them.
   * </pre>
   *
   * Protobuf type {@code tests.ListenTest}
   */
  public  static final class ListenTest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.ListenTest)
      ListenTestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ListenTest.newBuilder() to construct.
    private ListenTest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ListenTest() {
      responses_ = java.util.Collections.emptyList();
      snapshots_ = java.util.Collections.emptyList();
      isError_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ListenTest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                responses_ = new java.util.ArrayList<com.google.firestore.v1beta1.ListenResponse>();
                mutable_bitField0_ |= 0x00000001;
              }
              responses_.add(
                  input.readMessage(com.google.firestore.v1beta1.ListenResponse.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                snapshots_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Snapshot>();
                mutable_bitField0_ |= 0x00000002;
              }
              snapshots_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.Snapshot.parser(), extensionRegistry));
              break;
            }
            case 24: {

              isError_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          responses_ = java.util.Collections.unmodifiableList(responses_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          snapshots_ = java.util.Collections.unmodifiableList(snapshots_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_ListenTest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_ListenTest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.ListenTest.class, com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder.class);
    }

    private int bitField0_;
    public static final int RESPONSES_FIELD_NUMBER = 1;
    private java.util.List<com.google.firestore.v1beta1.ListenResponse> responses_;
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    public java.util.List<com.google.firestore.v1beta1.ListenResponse> getResponsesList() {
      return responses_;
    }
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    public java.util.List<? extends com.google.firestore.v1beta1.ListenResponseOrBuilder>
    getResponsesOrBuilderList() {
      return responses_;
    }
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    public int getResponsesCount() {
      return responses_.size();
    }
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    public com.google.firestore.v1beta1.ListenResponse getResponses(int index) {
      return responses_.get(index);
    }
    /**
     * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
     */
    public com.google.firestore.v1beta1.ListenResponseOrBuilder getResponsesOrBuilder(
        int index) {
      return responses_.get(index);
    }

    public static final int SNAPSHOTS_FIELD_NUMBER = 2;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot> snapshots_;
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot> getSnapshotsList() {
      return snapshots_;
    }
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>
    getSnapshotsOrBuilderList() {
      return snapshots_;
    }
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    public int getSnapshotsCount() {
      return snapshots_.size();
    }
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots(int index) {
      return snapshots_.get(index);
    }
    /**
     * <code>repeated .tests.Snapshot snapshots = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder(
        int index) {
      return snapshots_.get(index);
    }

    public static final int IS_ERROR_FIELD_NUMBER = 3;
    private boolean isError_;
    /**
     * <code>bool is_error = 3;</code>
     */
    public boolean getIsError() {
      return isError_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      for (int i = 0; i < responses_.size(); i++) {
        output.writeMessage(1, responses_.get(i));
      }
      for (int i = 0; i < snapshots_.size(); i++) {
        output.writeMessage(2, snapshots_.get(i));
      }
      if (isError_ != false) {
        output.writeBool(3, isError_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < responses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, responses_.get(i));
      }
      for (int i = 0; i < snapshots_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, snapshots_.get(i));
      }
      if (isError_ != false) {
        size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, isError_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.ListenTest)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.ListenTest other = (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) obj;

      boolean result = true;
      result = result && getResponsesList()
          .equals(other.getResponsesList());
      result = result && getSnapshotsList()
          .equals(other.getSnapshotsList());
      result = result && (getIsError()
          == other.getIsError());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getResponsesCount() > 0) {
        hash = (37 * hash) + RESPONSES_FIELD_NUMBER;
        hash = (53 * hash) + getResponsesList().hashCode();
      }
      if (getSnapshotsCount() > 0) {
        hash = (37 * hash) + SNAPSHOTS_FIELD_NUMBER;
        hash = (53 * hash) + getSnapshotsList().hashCode();
      }
      hash = (37 * hash) + IS_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsError());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.ListenTest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A test of the Listen streaming RPC (a.k.a. FireStore watch).
     * If the sequence of responses is provided to the implementation,
     * it should produce the sequence of snapshots.
     * If is_error is true, an error should occur after the snapshots.
     * The tests assume that the query is
     * Collection("projects/projectID/databases/(default)/documents/C").OrderBy("a", Ascending)
     * The watch target ID used in these tests is 1. Test interpreters
     * should either change their client's ID for testing,
     * or change the ID in the tests before running them.
     * </pre>
     *
     * Protobuf type {@code tests.ListenTest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.ListenTest)
        com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_ListenTest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_ListenTest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.ListenTest.class, com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.ListenTest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getResponsesFieldBuilder();
          getSnapshotsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (responsesBuilder_ == null) {
          responses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          responsesBuilder_.clear();
        }
        if (snapshotsBuilder_ == null) {
          snapshots_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          snapshotsBuilder_.clear();
        }
        isError_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_ListenTest_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.ListenTest build() {
        com.google.cloud.firestore.conformance.TestDefinition.ListenTest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.ListenTest buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.ListenTest result = new com.google.cloud.firestore.conformance.TestDefinition.ListenTest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (responsesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            responses_ = java.util.Collections.unmodifiableList(responses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.responses_ = responses_;
        } else {
          result.responses_ = responsesBuilder_.build();
        }
        if (snapshotsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            snapshots_ = java.util.Collections.unmodifiableList(snapshots_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.snapshots_ = snapshots_;
        } else {
          result.snapshots_ = snapshotsBuilder_.build();
        }
        result.isError_ = isError_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.ListenTest) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.ListenTest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.ListenTest other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance()) return this;
        if (responsesBuilder_ == null) {
          if (!other.responses_.isEmpty()) {
            if (responses_.isEmpty()) {
              responses_ = other.responses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResponsesIsMutable();
              responses_.addAll(other.responses_);
            }
            onChanged();
          }
        } else {
          if (!other.responses_.isEmpty()) {
            if (responsesBuilder_.isEmpty()) {
              responsesBuilder_.dispose();
              responsesBuilder_ = null;
              responses_ = other.responses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              responsesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getResponsesFieldBuilder() : null;
            } else {
              responsesBuilder_.addAllMessages(other.responses_);
            }
          }
        }
        if (snapshotsBuilder_ == null) {
          if (!other.snapshots_.isEmpty()) {
            if (snapshots_.isEmpty()) {
              snapshots_ = other.snapshots_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSnapshotsIsMutable();
              snapshots_.addAll(other.snapshots_);
            }
            onChanged();
          }
        } else {
          if (!other.snapshots_.isEmpty()) {
            if (snapshotsBuilder_.isEmpty()) {
              snapshotsBuilder_.dispose();
              snapshotsBuilder_ = null;
              snapshots_ = other.snapshots_;
              bitField0_ = (bitField0_ & ~0x00000002);
              snapshotsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getSnapshotsFieldBuilder() : null;
            } else {
              snapshotsBuilder_.addAllMessages(other.snapshots_);
            }
          }
        }
        if (other.getIsError() != false) {
          setIsError(other.getIsError());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.ListenTest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.firestore.v1beta1.ListenResponse> responses_ =
          java.util.Collections.emptyList();
      private void ensureResponsesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          responses_ = new java.util.ArrayList<com.google.firestore.v1beta1.ListenResponse>(responses_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.firestore.v1beta1.ListenResponse, com.google.firestore.v1beta1.ListenResponse.Builder, com.google.firestore.v1beta1.ListenResponseOrBuilder> responsesBuilder_;

      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public java.util.List<com.google.firestore.v1beta1.ListenResponse> getResponsesList() {
        if (responsesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(responses_);
        } else {
          return responsesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public int getResponsesCount() {
        if (responsesBuilder_ == null) {
          return responses_.size();
        } else {
          return responsesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public com.google.firestore.v1beta1.ListenResponse getResponses(int index) {
        if (responsesBuilder_ == null) {
          return responses_.get(index);
        } else {
          return responsesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder setResponses(
          int index, com.google.firestore.v1beta1.ListenResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.set(index, value);
          onChanged();
        } else {
          responsesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder setResponses(
          int index, com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.set(index, builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder addResponses(com.google.firestore.v1beta1.ListenResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.add(value);
          onChanged();
        } else {
          responsesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder addResponses(
          int index, com.google.firestore.v1beta1.ListenResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.add(index, value);
          onChanged();
        } else {
          responsesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder addResponses(
          com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.add(builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder addResponses(
          int index, com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.add(index, builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder addAllResponses(
          java.lang.Iterable<? extends com.google.firestore.v1beta1.ListenResponse> values) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, responses_);
          onChanged();
        } else {
          responsesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder clearResponses() {
        if (responsesBuilder_ == null) {
          responses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          responsesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public Builder removeResponses(int index) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.remove(index);
          onChanged();
        } else {
          responsesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public com.google.firestore.v1beta1.ListenResponse.Builder getResponsesBuilder(
          int index) {
        return getResponsesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public com.google.firestore.v1beta1.ListenResponseOrBuilder getResponsesOrBuilder(
          int index) {
        if (responsesBuilder_ == null) {
          return responses_.get(index);  } else {
          return responsesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public java.util.List<? extends com.google.firestore.v1beta1.ListenResponseOrBuilder>
      getResponsesOrBuilderList() {
        if (responsesBuilder_ != null) {
          return responsesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(responses_);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public com.google.firestore.v1beta1.ListenResponse.Builder addResponsesBuilder() {
        return getResponsesFieldBuilder().addBuilder(
            com.google.firestore.v1beta1.ListenResponse.getDefaultInstance());
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public com.google.firestore.v1beta1.ListenResponse.Builder addResponsesBuilder(
          int index) {
        return getResponsesFieldBuilder().addBuilder(
            index, com.google.firestore.v1beta1.ListenResponse.getDefaultInstance());
      }
      /**
       * <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code>
       */
      public java.util.List<com.google.firestore.v1beta1.ListenResponse.Builder>
      getResponsesBuilderList() {
        return getResponsesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.firestore.v1beta1.ListenResponse, com.google.firestore.v1beta1.ListenResponse.Builder, com.google.firestore.v1beta1.ListenResponseOrBuilder>
      getResponsesFieldBuilder() {
        if (responsesBuilder_ == null) {
          responsesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.firestore.v1beta1.ListenResponse, com.google.firestore.v1beta1.ListenResponse.Builder, com.google.firestore.v1beta1.ListenResponseOrBuilder>(
              responses_,
              ((bitField0_ & 0x00000001) == 0x00000001),
              getParentForChildren(),
              isClean());
          responses_ = null;
        }
        return responsesBuilder_;
      }

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot> snapshots_ =
          java.util.Collections.emptyList();
      private void ensureSnapshotsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          snapshots_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.Snapshot>(snapshots_);
          bitField0_ |= 0x00000002;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Snapshot, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> snapshotsBuilder_;

      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot> getSnapshotsList() {
        if (snapshotsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(snapshots_);
        } else {
          return snapshotsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public int getSnapshotsCount() {
        if (snapshotsBuilder_ == null) {
          return snapshots_.size();
        } else {
          return snapshotsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots(int index) {
        if (snapshotsBuilder_ == null) {
          return snapshots_.get(index);
        } else {
          return snapshotsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder setSnapshots(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) {
        if (snapshotsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSnapshotsIsMutable();
          snapshots_.set(index, value);
          onChanged();
        } else {
          snapshotsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder setSnapshots(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) {
        if (snapshotsBuilder_ == null) {
          ensureSnapshotsIsMutable();
          snapshots_.set(index, builderForValue.build());
          onChanged();
        } else {
          snapshotsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder addSnapshots(com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) {
        if (snapshotsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSnapshotsIsMutable();
          snapshots_.add(value);
          onChanged();
        } else {
          snapshotsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder addSnapshots(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) {
        if (snapshotsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSnapshotsIsMutable();
          snapshots_.add(index, value);
          onChanged();
        } else {
          snapshotsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder addSnapshots(
          com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) {
        if (snapshotsBuilder_ == null) {
          ensureSnapshotsIsMutable();
          snapshots_.add(builderForValue.build());
          onChanged();
        } else {
          snapshotsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder addSnapshots(
          int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) {
        if (snapshotsBuilder_ == null) {
          ensureSnapshotsIsMutable();
          snapshots_.add(index, builderForValue.build());
          onChanged();
        } else {
          snapshotsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder addAllSnapshots(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.Snapshot> values) {
        if (snapshotsBuilder_ == null) {
          ensureSnapshotsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, snapshots_);
          onChanged();
        } else {
          snapshotsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder clearSnapshots() {
        if (snapshotsBuilder_ == null) {
          snapshots_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          snapshotsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public Builder removeSnapshots(int index) {
        if (snapshotsBuilder_ == null) {
          ensureSnapshotsIsMutable();
          snapshots_.remove(index);
          onChanged();
        } else {
          snapshotsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder getSnapshotsBuilder(
          int index) {
        return getSnapshotsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder(
          int index) {
        if (snapshotsBuilder_ == null) {
          return snapshots_.get(index);  } else {
          return snapshotsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>
      getSnapshotsOrBuilderList() {
        if (snapshotsBuilder_ != null) {
          return snapshotsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(snapshots_);
        }
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder addSnapshotsBuilder() {
        return getSnapshotsFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder addSnapshotsBuilder(
          int index) {
        return getSnapshotsFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.Snapshot snapshots = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder>
      getSnapshotsBuilderList() {
        return getSnapshotsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.Snapshot, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>
      getSnapshotsFieldBuilder() {
        if (snapshotsBuilder_ == null) {
          snapshotsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.Snapshot, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>(
              snapshots_,
              ((bitField0_ & 0x00000002) == 0x00000002),
              getParentForChildren(),
              isClean());
          snapshots_ = null;
        }
        return snapshotsBuilder_;
      }

      private boolean isError_ ;
      /**
       * <code>bool is_error = 3;</code>
       */
      public boolean getIsError() {
        return isError_;
      }
      /**
       * <code>bool is_error = 3;</code>
       */
      public Builder setIsError(boolean value) {

        isError_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_error = 3;</code>
       */
      public Builder clearIsError() {

        isError_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.ListenTest)
    }

    // @@protoc_insertion_point(class_scope:tests.ListenTest)
    private static final com.google.cloud.firestore.conformance.TestDefinition.ListenTest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.ListenTest();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SnapshotOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.Snapshot)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    java.util.List<com.google.firestore.v1beta1.Document>
    getDocsList();
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    com.google.firestore.v1beta1.Document getDocs(int index);
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    int getDocsCount();
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    java.util.List<? extends com.google.firestore.v1beta1.DocumentOrBuilder>
    getDocsOrBuilderList();
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    com.google.firestore.v1beta1.DocumentOrBuilder getDocsOrBuilder(
        int index);

    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange>
    getChangesList();
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index);
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    int getChangesCount();
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>
    getChangesOrBuilderList();
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder getChangesOrBuilder(
        int index);

    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    boolean hasReadTime();
    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    com.google.protobuf.Timestamp getReadTime();
    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder();
  }
  /**
   * Protobuf type {@code tests.Snapshot}
   */
  public  static final class Snapshot extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.Snapshot)
      SnapshotOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Snapshot.newBuilder() to construct.
    private Snapshot(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Snapshot() {
      docs_ = java.util.Collections.emptyList();
      changes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Snapshot(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                docs_ = new java.util.ArrayList<com.google.firestore.v1beta1.Document>();
                mutable_bitField0_ |= 0x00000001;
              }
              docs_.add(
                  input.readMessage(com.google.firestore.v1beta1.Document.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                changes_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.DocChange>();
                mutable_bitField0_ |= 0x00000002;
              }
              changes_.add(
                  input.readMessage(com.google.cloud.firestore.conformance.TestDefinition.DocChange.parser(), extensionRegistry));
              break;
            }
            case 26: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (readTime_ != null) {
                subBuilder = readTime_.toBuilder();
              }
              readTime_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(readTime_);
                readTime_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          docs_ = java.util.Collections.unmodifiableList(docs_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          changes_ = java.util.Collections.unmodifiableList(changes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Snapshot_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Snapshot_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.Snapshot.class, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder.class);
    }

    private int bitField0_;
    public static final int DOCS_FIELD_NUMBER = 1;
    private java.util.List<com.google.firestore.v1beta1.Document> docs_;
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    public java.util.List<com.google.firestore.v1beta1.Document> getDocsList() {
      return docs_;
    }
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    public java.util.List<? extends com.google.firestore.v1beta1.DocumentOrBuilder>
    getDocsOrBuilderList() {
      return docs_;
    }
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    public int getDocsCount() {
      return docs_.size();
    }
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    public com.google.firestore.v1beta1.Document getDocs(int index) {
      return docs_.get(index);
    }
    /**
     * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
     */
    public com.google.firestore.v1beta1.DocumentOrBuilder getDocsOrBuilder(
        int index) {
      return docs_.get(index);
    }

    public static final int CHANGES_FIELD_NUMBER = 2;
    private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange> changes_;
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange> getChangesList() {
      return changes_;
    }
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>
    getChangesOrBuilderList() {
      return changes_;
    }
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    public int getChangesCount() {
      return changes_.size();
    }
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index) {
      return changes_.get(index);
    }
    /**
     * <code>repeated .tests.DocChange changes = 2;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder getChangesOrBuilder(
        int index) {
      return changes_.get(index);
    }

    public static final int READ_TIME_FIELD_NUMBER = 3;
    private com.google.protobuf.Timestamp readTime_;
    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    public boolean hasReadTime() {
      return readTime_ != null;
    }
    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    public com.google.protobuf.Timestamp getReadTime() {
      return readTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : readTime_;
    }
    /**
     * <code>.google.protobuf.Timestamp read_time = 3;</code>
     */
    public com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder() {
      return getReadTime();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      for (int i = 0; i < docs_.size(); i++) {
        output.writeMessage(1, docs_.get(i));
      }
      for (int i = 0; i < changes_.size(); i++) {
        output.writeMessage(2, changes_.get(i));
      }
      if (readTime_ != null) {
        output.writeMessage(3, getReadTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < docs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, docs_.get(i));
      }
      for (int i = 0; i < changes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, changes_.get(i));
      }
      if (readTime_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getReadTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Snapshot)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.Snapshot other = (com.google.cloud.firestore.conformance.TestDefinition.Snapshot) obj;

      boolean result = true;
      result = result && getDocsList()
          .equals(other.getDocsList());
      result = result && getChangesList()
          .equals(other.getChangesList());
      result = result && (hasReadTime() == other.hasReadTime());
      if (hasReadTime()) {
        result = result && getReadTime()
            .equals(other.getReadTime());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getDocsCount() > 0) {
        hash = (37 * hash) + DOCS_FIELD_NUMBER;
        hash = (53 * hash) + getDocsList().hashCode();
      }
      if (getChangesCount() > 0) {
        hash = (37 * hash) + CHANGES_FIELD_NUMBER;
        hash = (53 * hash) + getChangesList().hashCode();
      }
      if (hasReadTime()) {
        hash = (37 * hash) + READ_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getReadTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.Snapshot prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.Snapshot}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.Snapshot)
        com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Snapshot_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Snapshot_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.Snapshot.class, com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.Snapshot.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
          getDocsFieldBuilder();
          getChangesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (docsBuilder_ == null) {
          docs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          docsBuilder_.clear();
        }
        if (changesBuilder_ == null) {
          changes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          changesBuilder_.clear();
        }
        if (readTimeBuilder_ == null) {
          readTime_ = null;
        } else {
          readTime_ = null;
          readTimeBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_Snapshot_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot build() {
        com.google.cloud.firestore.conformance.TestDefinition.Snapshot result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.Snapshot buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.Snapshot result = new com.google.cloud.firestore.conformance.TestDefinition.Snapshot(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (docsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            docs_ = java.util.Collections.unmodifiableList(docs_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.docs_ = docs_;
        } else {
          result.docs_ = docsBuilder_.build();
        }
        if (changesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            changes_ = java.util.Collections.unmodifiableList(changes_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.changes_ = changes_;
        } else {
          result.changes_ = changesBuilder_.build();
        }
        if (readTimeBuilder_ == null) {
          result.readTime_ = readTime_;
        } else {
          result.readTime_ = readTimeBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Snapshot) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Snapshot)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Snapshot other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance()) return this;
        if (docsBuilder_ == null) {
          if (!other.docs_.isEmpty()) {
            if (docs_.isEmpty()) {
              docs_ = other.docs_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDocsIsMutable();
              docs_.addAll(other.docs_);
            }
            onChanged();
          }
        } else {
          if (!other.docs_.isEmpty()) {
            if (docsBuilder_.isEmpty()) {
              docsBuilder_.dispose();
              docsBuilder_ = null;
              docs_ = other.docs_;
              bitField0_ = (bitField0_ & ~0x00000001);
              docsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getDocsFieldBuilder() : null;
            } else {
              docsBuilder_.addAllMessages(other.docs_);
            }
          }
        }
        if (changesBuilder_ == null) {
          if (!other.changes_.isEmpty()) {
            if (changes_.isEmpty()) {
              changes_ = other.changes_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureChangesIsMutable();
              changes_.addAll(other.changes_);
            }
            onChanged();
          }
        } else {
          if (!other.changes_.isEmpty()) {
            if (changesBuilder_.isEmpty()) {
              changesBuilder_.dispose();
              changesBuilder_ = null;
              changes_ = other.changes_;
              bitField0_ = (bitField0_ & ~0x00000002);
              changesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                      getChangesFieldBuilder() : null;
            } else {
              changesBuilder_.addAllMessages(other.changes_);
            }
          }
        }
        if (other.hasReadTime()) {
          mergeReadTime(other.getReadTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.Snapshot parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.Snapshot) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.firestore.v1beta1.Document> docs_ =
          java.util.Collections.emptyList();
      private void ensureDocsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          docs_ = new java.util.ArrayList<com.google.firestore.v1beta1.Document>(docs_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder> docsBuilder_;

      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public java.util.List<com.google.firestore.v1beta1.Document> getDocsList() {
        if (docsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(docs_);
        } else {
          return docsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public int getDocsCount() {
        if (docsBuilder_ == null) {
          return docs_.size();
        } else {
          return docsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public com.google.firestore.v1beta1.Document getDocs(int index) {
        if (docsBuilder_ == null) {
          return docs_.get(index);
        } else {
          return docsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder setDocs(
          int index, com.google.firestore.v1beta1.Document value) {
        if (docsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDocsIsMutable();
          docs_.set(index, value);
          onChanged();
        } else {
          docsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder setDocs(
          int index, com.google.firestore.v1beta1.Document.Builder builderForValue) {
        if (docsBuilder_ == null) {
          ensureDocsIsMutable();
          docs_.set(index, builderForValue.build());
          onChanged();
        } else {
          docsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder addDocs(com.google.firestore.v1beta1.Document value) {
        if (docsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDocsIsMutable();
          docs_.add(value);
          onChanged();
        } else {
          docsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder addDocs(
          int index, com.google.firestore.v1beta1.Document value) {
        if (docsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDocsIsMutable();
          docs_.add(index, value);
          onChanged();
        } else {
          docsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder addDocs(
          com.google.firestore.v1beta1.Document.Builder builderForValue) {
        if (docsBuilder_ == null) {
          ensureDocsIsMutable();
          docs_.add(builderForValue.build());
          onChanged();
        } else {
          docsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder addDocs(
          int index, com.google.firestore.v1beta1.Document.Builder builderForValue) {
        if (docsBuilder_ == null) {
          ensureDocsIsMutable();
          docs_.add(index, builderForValue.build());
          onChanged();
        } else {
          docsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder addAllDocs(
          java.lang.Iterable<? extends com.google.firestore.v1beta1.Document> values) {
        if (docsBuilder_ == null) {
          ensureDocsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, docs_);
          onChanged();
        } else {
          docsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder clearDocs() {
        if (docsBuilder_ == null) {
          docs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          docsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public Builder removeDocs(int index) {
        if (docsBuilder_ == null) {
          ensureDocsIsMutable();
          docs_.remove(index);
          onChanged();
        } else {
          docsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public com.google.firestore.v1beta1.Document.Builder getDocsBuilder(
          int index) {
        return getDocsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public com.google.firestore.v1beta1.DocumentOrBuilder getDocsOrBuilder(
          int index) {
        if (docsBuilder_ == null) {
          return docs_.get(index);  } else {
          return docsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public java.util.List<? extends com.google.firestore.v1beta1.DocumentOrBuilder>
      getDocsOrBuilderList() {
        if (docsBuilder_ != null) {
          return docsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(docs_);
        }
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public com.google.firestore.v1beta1.Document.Builder addDocsBuilder() {
        return getDocsFieldBuilder().addBuilder(
            com.google.firestore.v1beta1.Document.getDefaultInstance());
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public com.google.firestore.v1beta1.Document.Builder addDocsBuilder(
          int index) {
        return getDocsFieldBuilder().addBuilder(
            index, com.google.firestore.v1beta1.Document.getDefaultInstance());
      }
      /**
       * <code>repeated .google.firestore.v1beta1.Document docs = 1;</code>
       */
      public java.util.List<com.google.firestore.v1beta1.Document.Builder>
      getDocsBuilderList() {
        return getDocsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder>
      getDocsFieldBuilder() {
        if (docsBuilder_ == null) {
          docsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder>(
              docs_,
              ((bitField0_ & 0x00000001) == 0x00000001),
              getParentForChildren(),
              isClean());
          docs_ = null;
        }
        return docsBuilder_;
      }

      private java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange> changes_ =
          java.util.Collections.emptyList();
      private void ensureChangesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          changes_ = new java.util.ArrayList<com.google.cloud.firestore.conformance.TestDefinition.DocChange>(changes_);
          bitField0_ |= 0x00000002;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DocChange, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> changesBuilder_;

      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange> getChangesList() {
        if (changesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(changes_);
        } else {
          return changesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public int getChangesCount() {
        if (changesBuilder_ == null) {
          return changes_.size();
        } else {
          return changesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index) {
        if (changesBuilder_ == null) {
          return changes_.get(index);
        } else {
          return changesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder setChanges(
          int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange value) {
        if (changesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChangesIsMutable();
          changes_.set(index, value);
          onChanged();
        } else {
          changesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder setChanges(
          int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) {
        if (changesBuilder_ == null) {
          ensureChangesIsMutable();
          changes_.set(index, builderForValue.build());
          onChanged();
        } else {
          changesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder addChanges(com.google.cloud.firestore.conformance.TestDefinition.DocChange value) {
        if (changesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChangesIsMutable();
          changes_.add(value);
          onChanged();
        } else {
          changesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder addChanges(
          int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange value) {
        if (changesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChangesIsMutable();
          changes_.add(index, value);
          onChanged();
        } else {
          changesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder addChanges(
          com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) {
        if (changesBuilder_ == null) {
          ensureChangesIsMutable();
          changes_.add(builderForValue.build());
          onChanged();
        } else {
          changesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder addChanges(
          int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) {
        if (changesBuilder_ == null) {
          ensureChangesIsMutable();
          changes_.add(index, builderForValue.build());
          onChanged();
        } else {
          changesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder addAllChanges(
          java.lang.Iterable<? extends com.google.cloud.firestore.conformance.TestDefinition.DocChange> values) {
        if (changesBuilder_ == null) {
          ensureChangesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, changes_);
          onChanged();
        } else {
          changesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder clearChanges() {
        if (changesBuilder_ == null) {
          changes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          changesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public Builder removeChanges(int index) {
        if (changesBuilder_ == null) {
          ensureChangesIsMutable();
          changes_.remove(index);
          onChanged();
        } else {
          changesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder getChangesBuilder(
          int index) {
        return getChangesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder getChangesOrBuilder(
          int index) {
        if (changesBuilder_ == null) {
          return changes_.get(index);  } else {
          return changesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public java.util.List<? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>
      getChangesOrBuilderList() {
        if (changesBuilder_ != null) {
          return changesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(changes_);
        }
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder addChangesBuilder() {
        return getChangesFieldBuilder().addBuilder(
            com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder addChangesBuilder(
          int index) {
        return getChangesFieldBuilder().addBuilder(
            index, com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance());
      }
      /**
       * <code>repeated .tests.DocChange changes = 2;</code>
       */
      public java.util.List<com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder>
      getChangesBuilderList() {
        return getChangesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.cloud.firestore.conformance.TestDefinition.DocChange, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>
      getChangesFieldBuilder() {
        if (changesBuilder_ == null) {
          changesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.firestore.conformance.TestDefinition.DocChange, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>(
              changes_,
              ((bitField0_ & 0x00000002) == 0x00000002),
              getParentForChildren(),
              isClean());
          changes_ = null;
        }
        return changesBuilder_;
      }

      private com.google.protobuf.Timestamp readTime_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> readTimeBuilder_;
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public boolean hasReadTime() {
        return readTimeBuilder_ != null || readTime_ != null;
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public com.google.protobuf.Timestamp getReadTime() {
        if (readTimeBuilder_ == null) {
          return readTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : readTime_;
        } else {
          return readTimeBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public Builder setReadTime(com.google.protobuf.Timestamp value) {
        if (readTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          readTime_ = value;
          onChanged();
        } else {
          readTimeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public Builder setReadTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (readTimeBuilder_ == null) {
          readTime_ = builderForValue.build();
          onChanged();
        } else {
          readTimeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public Builder mergeReadTime(com.google.protobuf.Timestamp value) {
        if (readTimeBuilder_ == null) {
          if (readTime_ != null) {
            readTime_ =
                com.google.protobuf.Timestamp.newBuilder(readTime_).mergeFrom(value).buildPartial();
          } else {
            readTime_ = value;
          }
          onChanged();
        } else {
          readTimeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public Builder clearReadTime() {
        if (readTimeBuilder_ == null) {
          readTime_ = null;
          onChanged();
        } else {
          readTime_ = null;
          readTimeBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public com.google.protobuf.Timestamp.Builder getReadTimeBuilder() {

        onChanged();
        return getReadTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder() {
        if (readTimeBuilder_ != null) {
          return readTimeBuilder_.getMessageOrBuilder();
        } else {
          return readTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : readTime_;
        }
      }
      /**
       * <code>.google.protobuf.Timestamp read_time = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>
      getReadTimeFieldBuilder() {
        if (readTimeBuilder_ == null) {
          readTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
              getReadTime(),
              getParentForChildren(),
              isClean());
          readTime_ = null;
        }
        return readTimeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.Snapshot)
    }

    // @@protoc_insertion_point(class_scope:tests.Snapshot)
    private static final com.google.cloud.firestore.conformance.TestDefinition.Snapshot DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Snapshot();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DocChangeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tests.DocChange)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.tests.DocChange.Kind kind = 1;</code>
     */
    int getKindValue();
    /**
     * <code>.tests.DocChange.Kind kind = 1;</code>
     */
    com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind();

    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    boolean hasDoc();
    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    com.google.firestore.v1beta1.Document getDoc();
    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    com.google.firestore.v1beta1.DocumentOrBuilder getDocOrBuilder();

    /**
     * <code>int32 old_index = 3;</code>
     */
    int getOldIndex();

    /**
     * <code>int32 new_index = 4;</code>
     */
    int getNewIndex();
  }
  /**
   * Protobuf type {@code tests.DocChange}
   */
  public  static final class DocChange extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tests.DocChange)
      DocChangeOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DocChange.newBuilder() to construct.
    private DocChange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DocChange() {
      kind_ = 0;
      oldIndex_ = 0;
      newIndex_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DocChange(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();

              kind_ = rawValue;
              break;
            }
            case 18: {
              com.google.firestore.v1beta1.Document.Builder subBuilder = null;
              if (doc_ != null) {
                subBuilder = doc_.toBuilder();
              }
              doc_ = input.readMessage(com.google.firestore.v1beta1.Document.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(doc_);
                doc_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              oldIndex_ = input.readInt32();
              break;
            }
            case 32: {

              newIndex_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocChange_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    internalGetFieldAccessorTable() {
      return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocChange_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.firestore.conformance.TestDefinition.DocChange.class, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder.class);
    }

    /**
     * Protobuf enum {@code tests.DocChange.Kind}
     */
    public enum Kind
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>KIND_UNSPECIFIED = 0;</code>
       */
      KIND_UNSPECIFIED(0),
      /**
       * <code>ADDED = 1;</code>
       */
      ADDED(1),
      /**
       * <code>REMOVED = 2;</code>
       */
      REMOVED(2),
      /**
       * <code>MODIFIED = 3;</code>
       */
      MODIFIED(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>KIND_UNSPECIFIED = 0;</code>
       */
      public static final int KIND_UNSPECIFIED_VALUE = 0;
      /**
       * <code>ADDED = 1;</code>
       */
      public static final int ADDED_VALUE = 1;
      /**
       * <code>REMOVED = 2;</code>
       */
      public static final int REMOVED_VALUE = 2;
      /**
       * <code>MODIFIED = 3;</code>
       */
      public static final int MODIFIED_VALUE = 3;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Kind valueOf(int value) {
        return forNumber(value);
      }

      public static Kind forNumber(int value) {
        switch (value) {
          case 0: return KIND_UNSPECIFIED;
          case 1: return ADDED;
          case 2: return REMOVED;
          case 3: return MODIFIED;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
      getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
      getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:tests.DocChange.Kind)
    }

    public static final int KIND_FIELD_NUMBER = 1;
    private int kind_;
    /**
     * <code>.tests.DocChange.Kind kind = 1;</code>
     */
    public int getKindValue() {
      return kind_;
    }
    /**
     * <code>.tests.DocChange.Kind kind = 1;</code>
     */
    public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind() {
      com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind result = com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.valueOf(kind_);
      return result == null ? com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.UNRECOGNIZED : result;
    }

    public static final int DOC_FIELD_NUMBER = 2;
    private com.google.firestore.v1beta1.Document doc_;
    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    public boolean hasDoc() {
      return doc_ != null;
    }
    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    public com.google.firestore.v1beta1.Document getDoc() {
      return doc_ == null ? com.google.firestore.v1beta1.Document.getDefaultInstance() : doc_;
    }
    /**
     * <code>.google.firestore.v1beta1.Document doc = 2;</code>
     */
    public com.google.firestore.v1beta1.DocumentOrBuilder getDocOrBuilder() {
      return getDoc();
    }

    public static final int OLD_INDEX_FIELD_NUMBER = 3;
    private int oldIndex_;
    /**
     * <code>int32 old_index = 3;</code>
     */
    public int getOldIndex() {
      return oldIndex_;
    }

    public static final int NEW_INDEX_FIELD_NUMBER = 4;
    private int newIndex_;
    /**
     * <code>int32 new_index = 4;</code>
     */
    public int getNewIndex() {
      return newIndex_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
        throws java.io.IOException {
      if (kind_ != com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.KIND_UNSPECIFIED.getNumber()) {
        output.writeEnum(1, kind_);
      }
      if (doc_ != null) {
        output.writeMessage(2, getDoc());
      }
      if (oldIndex_ != 0) {
        output.writeInt32(3, oldIndex_);
      }
      if (newIndex_ != 0) {
        output.writeInt32(4, newIndex_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (kind_ != com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.KIND_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, kind_);
      }
      if (doc_ != null) {
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getDoc());
      }
      if (oldIndex_ != 0) {
        size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, oldIndex_);
      }
      if (newIndex_ != 0) {
        size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, newIndex_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DocChange)) {
        return super.equals(obj);
      }
      com.google.cloud.firestore.conformance.TestDefinition.DocChange other = (com.google.cloud.firestore.conformance.TestDefinition.DocChange) obj;

      boolean result = true;
      result = result && kind_ == other.kind_;
      result = result && (hasDoc() == other.hasDoc());
      if (hasDoc()) {
        result = result && getDoc()
            .equals(other.getDoc());
      }
      result = result && (getOldIndex()
          == other.getOldIndex());
      result = result && (getNewIndex()
          == other.getNewIndex());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + KIND_FIELD_NUMBER;
      hash = (53 * hash) + kind_;
      if (hasDoc()) {
        hash = (37 * hash) + DOC_FIELD_NUMBER;
        hash = (53 * hash) + getDoc().hashCode();
      }
      hash = (37 * hash) + OLD_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getOldIndex();
      hash = (37 * hash) + NEW_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getNewIndex();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.cloud.firestore.conformance.TestDefinition.DocChange prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tests.DocChange}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tests.DocChange)
        com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocChange_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocChange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.firestore.conformance.TestDefinition.DocChange.class, com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder.class);
      }

      // Construct using com.google.cloud.firestore.conformance.TestDefinition.DocChange.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
            .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        kind_ = 0;

        if (docBuilder_ == null) {
          doc_ = null;
        } else {
          doc_ = null;
          docBuilder_ = null;
        }
        oldIndex_ = 0;

        newIndex_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
      getDescriptorForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.internal_static_tests_DocChange_descriptor;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocChange getDefaultInstanceForType() {
        return com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance();
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocChange build() {
        com.google.cloud.firestore.conformance.TestDefinition.DocChange result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.cloud.firestore.conformance.TestDefinition.DocChange buildPartial() {
        com.google.cloud.firestore.conformance.TestDefinition.DocChange result = new com.google.cloud.firestore.conformance.TestDefinition.DocChange(this);
        result.kind_ = kind_;
        if (docBuilder_ == null) {
          result.doc_ = doc_;
        } else {
          result.doc_ = docBuilder_.build();
        }
        result.oldIndex_ = oldIndex_;
        result.newIndex_ = newIndex_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DocChange) {
          return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.DocChange)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.DocChange other) {
        if (other == com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance()) return this;
        if (other.kind_ != 0) {
          setKindValue(other.getKindValue());
        }
        if (other.hasDoc()) {
          mergeDoc(other.getDoc());
        }
        if (other.getOldIndex() != 0) {
          setOldIndex(other.getOldIndex());
        }
        if (other.getNewIndex() != 0) {
          setNewIndex(other.getNewIndex());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.cloud.firestore.conformance.TestDefinition.DocChange parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.cloud.firestore.conformance.TestDefinition.DocChange) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int kind_ = 0;
      /**
       * <code>.tests.DocChange.Kind kind = 1;</code>
       */
      public int getKindValue() {
        return kind_;
      }
      /**
       * <code>.tests.DocChange.Kind kind = 1;</code>
       */
      public Builder setKindValue(int value) {
        kind_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.tests.DocChange.Kind kind = 1;</code>
       */
      public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind() {
        com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind result = com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.valueOf(kind_);
        return result == null ? com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.UNRECOGNIZED : result;
      }
      /**
       * <code>.tests.DocChange.Kind kind = 1;</code>
       */
      public Builder setKind(com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind value) {
        if (value == null) {
          throw new NullPointerException();
        }

        kind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.tests.DocChange.Kind kind = 1;</code>
       */
      public Builder clearKind() {

        kind_ = 0;
        onChanged();
        return this;
      }

      private com.google.firestore.v1beta1.Document doc_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder> docBuilder_;
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public boolean hasDoc() {
        return docBuilder_ != null || doc_ != null;
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public com.google.firestore.v1beta1.Document getDoc() {
        if (docBuilder_ == null) {
          return doc_ == null ? com.google.firestore.v1beta1.Document.getDefaultInstance() : doc_;
        } else {
          return docBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public Builder setDoc(com.google.firestore.v1beta1.Document value) {
        if (docBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          doc_ = value;
          onChanged();
        } else {
          docBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public Builder setDoc(
          com.google.firestore.v1beta1.Document.Builder builderForValue) {
        if (docBuilder_ == null) {
          doc_ = builderForValue.build();
          onChanged();
        } else {
          docBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public Builder mergeDoc(com.google.firestore.v1beta1.Document value) {
        if (docBuilder_ == null) {
          if (doc_ != null) {
            doc_ =
                com.google.firestore.v1beta1.Document.newBuilder(doc_).mergeFrom(value).buildPartial();
          } else {
            doc_ = value;
          }
          onChanged();
        } else {
          docBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public Builder clearDoc() {
        if (docBuilder_ == null) {
          doc_ = null;
          onChanged();
        } else {
          doc_ = null;
          docBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public com.google.firestore.v1beta1.Document.Builder getDocBuilder() {

        onChanged();
        return getDocFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      public com.google.firestore.v1beta1.DocumentOrBuilder getDocOrBuilder() {
        if (docBuilder_ != null) {
          return docBuilder_.getMessageOrBuilder();
        } else {
          return doc_ == null ?
              com.google.firestore.v1beta1.Document.getDefaultInstance() : doc_;
        }
      }
      /**
       * <code>.google.firestore.v1beta1.Document doc = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder>
      getDocFieldBuilder() {
        if (docBuilder_ == null) {
          docBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.firestore.v1beta1.Document, com.google.firestore.v1beta1.Document.Builder, com.google.firestore.v1beta1.DocumentOrBuilder>(
              getDoc(),
              getParentForChildren(),
              isClean());
          doc_ = null;
        }
        return docBuilder_;
      }

      private int oldIndex_ ;
      /**
       * <code>int32 old_index = 3;</code>
       */
      public int getOldIndex() {
        return oldIndex_;
      }
      /**
       * <code>int32 old_index = 3;</code>
       */
      public Builder setOldIndex(int value) {

        oldIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 old_index = 3;</code>
       */
      public Builder clearOldIndex() {

        oldIndex_ = 0;
        onChanged();
        return this;
      }

      private int newIndex_ ;
      /**
       * <code>int32 new_index = 4;</code>
       */
      public int getNewIndex() {
        return newIndex_;
      }
      /**
       * <code>int32 new_index = 4;</code>
       */
      public Builder setNewIndex(int value) {

        newIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 new_index = 4;</code>
       */
      public Builder clearNewIndex() {

        newIndex_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tests.DocChange)
    }

    // @@protoc_insertion_point(class_scope:tests.DocChange)
    private static final com.google.cloud.firestore.conformance.TestDefinition.DocChange DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DocChange();
    }

    public static com.google.cloud.firestore.conformance.TestDefinition.DocChange getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.cloud.firestore.conformance.TestDefinition.DocChange getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_TestSuite_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_TestSuite_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Test_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Test_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_GetTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_GetTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_CreateTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_CreateTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_SetTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_SetTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_UpdateTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_UpdateTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_UpdatePathsTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_UpdatePathsTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_DeleteTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_DeleteTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_SetOption_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_SetOption_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_QueryTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_QueryTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Clause_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Clause_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Select_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Select_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Where_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Where_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_OrderBy_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_OrderBy_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Cursor_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Cursor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_DocSnapshot_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_DocSnapshot_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_FieldPath_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_FieldPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_ListenTest_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_ListenTest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_Snapshot_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_Snapshot_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_tests_DocChange_descriptor;
  private static final
  com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_tests_DocChange_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\025test-definition.proto\022\005tests\032%google/f" +
            "irestore/v1beta1/common.proto\032\'google/fi" +
            "restore/v1beta1/document.proto\032(google/f" +
            "irestore/v1beta1/firestore.proto\032$google" +
            "/firestore/v1beta1/query.proto\032\037google/p" +
            "rotobuf/timestamp.proto\"\'\n\tTestSuite\022\032\n\005" +
            "tests\030\001 \003(\0132\013.tests.Test\"\310\002\n\004Test\022\023\n\013des" +
            "cription\030\001 \001(\t\022\035\n\003get\030\002 \001(\0132\016.tests.GetT" +
            "estH\000\022#\n\006create\030\003 \001(\0132\021.tests.CreateTest" +
            "H\000\022\035\n\003set\030\004 \001(\0132\016.tests.SetTestH\000\022#\n\006upd" +
            "ate\030\005 \001(\0132\021.tests.UpdateTestH\000\022.\n\014update" +
            "_paths\030\006 \001(\0132\026.tests.UpdatePathsTestH\000\022#" +
            "\n\006delete\030\007 \001(\0132\021.tests.DeleteTestH\000\022!\n\005q" +
            "uery\030\010 \001(\0132\020.tests.QueryTestH\000\022#\n\006listen" +
            "\030\t \001(\0132\021.tests.ListenTestH\000B\006\n\004test\"^\n\007G" +
            "etTest\022\024\n\014doc_ref_path\030\001 \001(\t\022=\n\007request\030" +
            "\002 \001(\0132,.google.firestore.v1beta1.GetDocu" +
            "mentRequest\"\201\001\n\nCreateTest\022\024\n\014doc_ref_pa" +
            "th\030\001 \001(\t\022\021\n\tjson_data\030\002 \001(\t\0228\n\007request\030\003" +
            " \001(\0132\'.google.firestore.v1beta1.CommitRe" +
            "quest\022\020\n\010is_error\030\004 \001(\010\"\240\001\n\007SetTest\022\024\n\014d" +
            "oc_ref_path\030\001 \001(\t\022 \n\006option\030\002 \001(\0132\020.test" +
            "s.SetOption\022\021\n\tjson_data\030\003 \001(\t\0228\n\007reques" +
            "t\030\004 \001(\0132\'.google.firestore.v1beta1.Commi" +
            "tRequest\022\020\n\010is_error\030\005 \001(\010\"\277\001\n\nUpdateTes" +
            "t\022\024\n\014doc_ref_path\030\001 \001(\t\022<\n\014precondition\030" +
            "\002 \001(\0132&.google.firestore.v1beta1.Precond" +
            "ition\022\021\n\tjson_data\030\003 \001(\t\0228\n\007request\030\004 \001(" +
            "\0132\'.google.firestore.v1beta1.CommitReque" +
            "st\022\020\n\010is_error\030\005 \001(\010\"\355\001\n\017UpdatePathsTest" +
            "\022\024\n\014doc_ref_path\030\001 \001(\t\022<\n\014precondition\030\002" +
            " \001(\0132&.google.firestore.v1beta1.Precondi" +
            "tion\022%\n\013field_paths\030\003 \003(\0132\020.tests.FieldP" +
            "ath\022\023\n\013json_values\030\004 \003(\t\0228\n\007request\030\005 \001(" +
            "\0132\'.google.firestore.v1beta1.CommitReque" +
            "st\022\020\n\010is_error\030\006 \001(\010\"\254\001\n\nDeleteTest\022\024\n\014d" +
            "oc_ref_path\030\001 \001(\t\022<\n\014precondition\030\002 \001(\0132" +
            "&.google.firestore.v1beta1.Precondition\022" +
            "8\n\007request\030\003 \001(\0132\'.google.firestore.v1be" +
            "ta1.CommitRequest\022\020\n\010is_error\030\004 \001(\010\":\n\tS" +
            "etOption\022\013\n\003all\030\001 \001(\010\022 \n\006fields\030\002 \003(\0132\020." +
            "tests.FieldPath\"\212\001\n\tQueryTest\022\021\n\tcoll_pa" +
            "th\030\001 \001(\t\022\036\n\007clauses\030\002 \003(\0132\r.tests.Clause" +
            "\0228\n\005query\030\003 \001(\0132).google.firestore.v1bet" +
            "a1.StructuredQuery\022\020\n\010is_error\030\004 \001(\010\"\250\002\n" +
            "\006Clause\022\037\n\006select\030\001 \001(\0132\r.tests.SelectH\000" +
            "\022\035\n\005where\030\002 \001(\0132\014.tests.WhereH\000\022\"\n\010order" +
            "_by\030\003 \001(\0132\016.tests.OrderByH\000\022\020\n\006offset\030\004 " +
            "\001(\005H\000\022\017\n\005limit\030\005 \001(\005H\000\022!\n\010start_at\030\006 \001(\013" +
            "2\r.tests.CursorH\000\022$\n\013start_after\030\007 \001(\0132\r" +
            ".tests.CursorH\000\022\037\n\006end_at\030\010 \001(\0132\r.tests." +
            "CursorH\000\022#\n\nend_before\030\t \001(\0132\r.tests.Cur" +
            "sorH\000B\010\n\006clause\"*\n\006Select\022 \n\006fields\030\001 \003(" +
            "\0132\020.tests.FieldPath\"G\n\005Where\022\036\n\004path\030\001 \001" +
            "(\0132\020.tests.FieldPath\022\n\n\002op\030\002 \001(\t\022\022\n\njson" +
            "_value\030\003 \001(\t\"<\n\007OrderBy\022\036\n\004path\030\001 \001(\0132\020." +
            "tests.FieldPath\022\021\n\tdirection\030\002 \001(\t\"G\n\006Cu" +
            "rsor\022(\n\014doc_snapshot\030\001 \001(\0132\022.tests.DocSn" +
            "apshot\022\023\n\013json_values\030\002 \003(\t\".\n\013DocSnapsh" +
            "ot\022\014\n\004path\030\001 \001(\t\022\021\n\tjson_data\030\002 \001(\t\"\032\n\tF" +
            "ieldPath\022\r\n\005field\030\001 \003(\t\"\177\n\nListenTest\022;\n" +
            "\tresponses\030\001 \003(\0132(.google.firestore.v1be" +
            "ta1.ListenResponse\022\"\n\tsnapshots\030\002 \003(\0132\017." +
            "tests.Snapshot\022\020\n\010is_error\030\003 \001(\010\"\216\001\n\010Sna" +
            "pshot\0220\n\004docs\030\001 \003(\0132\".google.firestore.v" +
            "1beta1.Document\022!\n\007changes\030\002 \003(\0132\020.tests" +
            ".DocChange\022-\n\tread_time\030\003 \001(\0132\032.google.p" +
            "rotobuf.Timestamp\"\313\001\n\tDocChange\022#\n\004kind\030" +
            "\001 \001(\0162\025.tests.DocChange.Kind\022/\n\003doc\030\002 \001(" +
            "\0132\".google.firestore.v1beta1.Document\022\021\n" +
            "\told_index\030\003 \001(\005\022\021\n\tnew_index\030\004 \001(\005\"B\n\004K" +
            "ind\022\024\n\020KIND_UNSPECIFIED\020\000\022\t\n\005ADDED\020\001\022\013\n\007" +
            "REMOVED\020\002\022\014\n\010MODIFIED\020\003Bx\n&com.google.cl" +
            "oud.firestore.conformance\252\002\"Google.Cloud" +
            ".Firestore.Tests.Proto\312\002(Google\\Cloud\\Fi" +
            "restore\\Tests\\Conformanceb\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
            new com.google.protobuf.Descriptors.FileDescriptor[] {
                com.google.firestore.v1beta1.CommonProto.getDescriptor(),
                com.google.firestore.v1beta1.DocumentProto.getDescriptor(),
                com.google.firestore.v1beta1.FirestoreProto.getDescriptor(),
                com.google.firestore.v1beta1.QueryProto.getDescriptor(),
                com.google.protobuf.TimestampProto.getDescriptor(),
            }, assigner);
    internal_static_tests_TestSuite_descriptor =
        getDescriptor().getMessageTypes().get(0);
    internal_static_tests_TestSuite_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_TestSuite_descriptor,
        new java.lang.String[] { "Tests", });
    internal_static_tests_Test_descriptor =
        getDescriptor().getMessageTypes().get(1);
    internal_static_tests_Test_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Test_descriptor,
        new java.lang.String[] { "Description", "Get", "Create", "Set", "Update", "UpdatePaths", "Delete", "Query", "Listen", "Test", });
    internal_static_tests_GetTest_descriptor =
        getDescriptor().getMessageTypes().get(2);
    internal_static_tests_GetTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_GetTest_descriptor,
        new java.lang.String[] { "DocRefPath", "Request", });
    internal_static_tests_CreateTest_descriptor =
        getDescriptor().getMessageTypes().get(3);
    internal_static_tests_CreateTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_CreateTest_descriptor,
        new java.lang.String[] { "DocRefPath", "JsonData", "Request", "IsError", });
    internal_static_tests_SetTest_descriptor =
        getDescriptor().getMessageTypes().get(4);
    internal_static_tests_SetTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_SetTest_descriptor,
        new java.lang.String[] { "DocRefPath", "Option", "JsonData", "Request", "IsError", });
    internal_static_tests_UpdateTest_descriptor =
        getDescriptor().getMessageTypes().get(5);
    internal_static_tests_UpdateTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_UpdateTest_descriptor,
        new java.lang.String[] { "DocRefPath", "Precondition", "JsonData", "Request", "IsError", });
    internal_static_tests_UpdatePathsTest_descriptor =
        getDescriptor().getMessageTypes().get(6);
    internal_static_tests_UpdatePathsTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_UpdatePathsTest_descriptor,
        new java.lang.String[] { "DocRefPath", "Precondition", "FieldPaths", "JsonValues", "Request", "IsError", });
    internal_static_tests_DeleteTest_descriptor =
        getDescriptor().getMessageTypes().get(7);
    internal_static_tests_DeleteTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_DeleteTest_descriptor,
        new java.lang.String[] { "DocRefPath", "Precondition", "Request", "IsError", });
    internal_static_tests_SetOption_descriptor =
        getDescriptor().getMessageTypes().get(8);
    internal_static_tests_SetOption_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_SetOption_descriptor,
        new java.lang.String[] { "All", "Fields", });
    internal_static_tests_QueryTest_descriptor =
        getDescriptor().getMessageTypes().get(9);
    internal_static_tests_QueryTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_QueryTest_descriptor,
        new java.lang.String[] { "CollPath", "Clauses", "Query", "IsError", });
    internal_static_tests_Clause_descriptor =
        getDescriptor().getMessageTypes().get(10);
    internal_static_tests_Clause_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Clause_descriptor,
        new java.lang.String[] { "Select", "Where", "OrderBy", "Offset", "Limit", "StartAt", "StartAfter", "EndAt", "EndBefore", "Clause", });
    internal_static_tests_Select_descriptor =
        getDescriptor().getMessageTypes().get(11);
    internal_static_tests_Select_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Select_descriptor,
        new java.lang.String[] { "Fields", });
    internal_static_tests_Where_descriptor =
        getDescriptor().getMessageTypes().get(12);
    internal_static_tests_Where_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Where_descriptor,
        new java.lang.String[] { "Path", "Op", "JsonValue", });
    internal_static_tests_OrderBy_descriptor =
        getDescriptor().getMessageTypes().get(13);
    internal_static_tests_OrderBy_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_OrderBy_descriptor,
        new java.lang.String[] { "Path", "Direction", });
    internal_static_tests_Cursor_descriptor =
        getDescriptor().getMessageTypes().get(14);
    internal_static_tests_Cursor_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Cursor_descriptor,
        new java.lang.String[] { "DocSnapshot", "JsonValues", });
    internal_static_tests_DocSnapshot_descriptor =
        getDescriptor().getMessageTypes().get(15);
    internal_static_tests_DocSnapshot_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_DocSnapshot_descriptor,
        new java.lang.String[] { "Path", "JsonData", });
    internal_static_tests_FieldPath_descriptor =
        getDescriptor().getMessageTypes().get(16);
    internal_static_tests_FieldPath_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_FieldPath_descriptor,
        new java.lang.String[] { "Field", });
    internal_static_tests_ListenTest_descriptor =
        getDescriptor().getMessageTypes().get(17);
    internal_static_tests_ListenTest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_ListenTest_descriptor,
        new java.lang.String[] { "Responses", "Snapshots", "IsError", });
    internal_static_tests_Snapshot_descriptor =
        getDescriptor().getMessageTypes().get(18);
    internal_static_tests_Snapshot_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_Snapshot_descriptor,
        new java.lang.String[] { "Docs", "Changes", "ReadTime", });
    internal_static_tests_DocChange_descriptor =
        getDescriptor().getMessageTypes().get(19);
    internal_static_tests_DocChange_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_tests_DocChange_descriptor,
        new java.lang.String[] { "Kind", "Doc", "OldIndex", "NewIndex", });
    com.google.firestore.v1beta1.CommonProto.getDescriptor();
    com.google.firestore.v1beta1.DocumentProto.getDescriptor();
    com.google.firestore.v1beta1.FirestoreProto.getDescriptor();
    com.google.firestore.v1beta1.QueryProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
