firestore: switch to apiv1

This switches firestore from the apiv1beta1 API to the apiv1 API. It
also switches several RPCs to include "/documents" in parent paths:

In the v1beta1 API, firestore accidentally allowed documents to be
queried with a path that did not include /documents. In v1, this was
disallowed. Where this matters:

- Docrefs: but these already have /documents added as part of their
initialization step.
- Collrefs: most collrefs are the child of a docref, which already
adds /documents as described above. However, top-level collrefs don't
already have this. So, in this CL we add /documents to top-level collref
parents.
- Places where we use client.Path() directly. In these places we add
/documents after client.Path(), keeping client.Path as-is to avoid
confusion.

Also in this CL we pull in https://github.com/googleapis/google-cloud-common/pull/271.

Change-Id: Ibdf4de9ee59def2fe9b60ece9c0b1e06b00a0e3c
Reviewed-on: https://code-review.googlesource.com/c/37413
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/firestore/client.go b/firestore/client.go
index 58c4ac4..3535f79 100644
--- a/firestore/client.go
+++ b/firestore/client.go
@@ -23,13 +23,13 @@
 	"strings"
 	"time"
 
-	vkit "cloud.google.com/go/firestore/apiv1beta1"
+	vkit "cloud.google.com/go/firestore/apiv1"
 	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go/v2"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
@@ -211,7 +211,7 @@
 		client: c,
 		it: c.c.ListCollectionIds(
 			withResourceHeader(ctx, c.path()),
-			&pb.ListCollectionIdsRequest{Parent: c.path()}),
+			&pb.ListCollectionIdsRequest{Parent: c.path() + "/documents"}),
 	}
 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(
 		it.fetch,
diff --git a/firestore/client_test.go b/firestore/client_test.go
index 332c1b2..23669d0 100644
--- a/firestore/client_test.go
+++ b/firestore/client_test.go
@@ -19,7 +19,7 @@
 	"testing"
 
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
@@ -34,7 +34,7 @@
 	db := "projects/projectID/databases/(default)"
 	wantc1 := &CollectionRef{
 		c:          testClient,
-		parentPath: db,
+		parentPath: db + "/documents",
 		selfPath:   "X",
 		Parent:     nil,
 		ID:         "X",
@@ -43,7 +43,7 @@
 			c:            testClient,
 			collectionID: "X",
 			path:         "projects/projectID/databases/(default)/documents/X",
-			parentPath:   db,
+			parentPath:   db + "/documents",
 		},
 	}
 	if !testEqual(coll1, wantc1) {
diff --git a/firestore/collref.go b/firestore/collref.go
index b28ffe3..77deac8 100644
--- a/firestore/collref.go
+++ b/firestore/collref.go
@@ -28,7 +28,9 @@
 
 	// The full resource path of the collection's parent. Typically Parent.Path,
 	// or c.path if Parent is nil. May be different if this CollectionRef was
-	// created from a stored reference to a different project/DB.
+	// created from a stored reference to a different project/DB. Always
+	// includes /documents - that is, the parent is minimally considered to be
+	// "<db>/documents".
 	//
 	// For example, "projects/P/databases/D/documents/coll-1/doc-1".
 	parentPath string
@@ -55,14 +57,14 @@
 	return &CollectionRef{
 		c:          c,
 		ID:         id,
-		parentPath: dbPath,
+		parentPath: dbPath + "/documents",
 		selfPath:   id,
 		Path:       dbPath + "/documents/" + id,
 		Query: Query{
 			c:            c,
 			collectionID: id,
 			path:         dbPath + "/documents/" + id,
-			parentPath:   dbPath,
+			parentPath:   dbPath + "/documents",
 		},
 	}
 }
diff --git a/firestore/collref_test.go b/firestore/collref_test.go
index b4c0aad..01c075e 100644
--- a/firestore/collref_test.go
+++ b/firestore/collref_test.go
@@ -19,7 +19,7 @@
 	"testing"
 
 	"github.com/golang/protobuf/proto"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func TestDoc(t *testing.T) {
diff --git a/firestore/conformance_test.go b/firestore/conformance_test.go
index f7ee7d5..c1f7745 100644
--- a/firestore/conformance_test.go
+++ b/firestore/conformance_test.go
@@ -35,7 +35,7 @@
 	ts "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/google/go-cmp/cmp"
 	"google.golang.org/api/iterator"
-	fspb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	fspb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 const conformanceTestWatchTargetID = 1
diff --git a/firestore/docref.go b/firestore/docref.go
index 3552abe..1858b6f 100644
--- a/firestore/docref.go
+++ b/firestore/docref.go
@@ -22,9 +22,9 @@
 	"reflect"
 	"sort"
 
-	vkit "cloud.google.com/go/firestore/apiv1beta1"
+	vkit "cloud.google.com/go/firestore/apiv1"
 	"google.golang.org/api/iterator"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/firestore/docref_test.go b/firestore/docref_test.go
index cda97a0..6d7fe56 100644
--- a/firestore/docref_test.go
+++ b/firestore/docref_test.go
@@ -21,7 +21,7 @@
 	"testing"
 	"time"
 
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/firestore/document.go b/firestore/document.go
index 305eb8f..5b9d79e 100644
--- a/firestore/document.go
+++ b/firestore/document.go
@@ -22,7 +22,7 @@
 
 	"github.com/golang/protobuf/ptypes"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/firestore/document_test.go b/firestore/document_test.go
index c4e57df..5a273d0 100644
--- a/firestore/document_test.go
+++ b/firestore/document_test.go
@@ -22,7 +22,7 @@
 	"time"
 
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func TestToProtoDocument(t *testing.T) {
diff --git a/firestore/fieldpath.go b/firestore/fieldpath.go
index ceb3d34..b9c1399 100644
--- a/firestore/fieldpath.go
+++ b/firestore/fieldpath.go
@@ -25,7 +25,7 @@
 	"sync"
 
 	"cloud.google.com/go/internal/fields"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // A FieldPath is a non-empty sequence of non-empty fields that reference a value.
diff --git a/firestore/from_value.go b/firestore/from_value.go
index feba34f..66ad9e8 100644
--- a/firestore/from_value.go
+++ b/firestore/from_value.go
@@ -21,7 +21,7 @@
 	"strings"
 
 	"github.com/golang/protobuf/ptypes"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func setFromProtoValue(x interface{}, vproto *pb.Value, c *Client) error {
@@ -342,7 +342,6 @@
 		return pathToDoc(v.ReferenceValue, c)
 	case *pb.Value_GeoPointValue:
 		return v.GeoPointValue, nil
-
 	case *pb.Value_ArrayValue:
 		vals := v.ArrayValue.Values
 		ret := make([]interface{}, len(vals))
diff --git a/firestore/from_value_test.go b/firestore/from_value_test.go
index bee7a4a..3c6cd0e 100644
--- a/firestore/from_value_test.go
+++ b/firestore/from_value_test.go
@@ -25,7 +25,7 @@
 	"time"
 
 	ts "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 )
 
@@ -78,12 +78,12 @@
 				shortPath: "c/d",
 				Parent: &CollectionRef{
 					ID:         "c",
-					parentPath: "projects/P/databases/D",
+					parentPath: "projects/P/databases/D/documents",
 					selfPath:   "c",
 					Path:       "projects/P/databases/D/documents/c",
 					Query: Query{
 						collectionID: "c",
-						parentPath:   "projects/P/databases/D",
+						parentPath:   "projects/P/databases/D/documents",
 						path:         "projects/P/databases/D/documents/c",
 					},
 				},
@@ -525,14 +525,14 @@
 				Parent: &CollectionRef{
 					ID:         "c1",
 					c:          c,
-					parentPath: "projects/P/databases/D",
+					parentPath: "projects/P/databases/D/documents",
 					Path:       "projects/P/databases/D/documents/c1",
 					selfPath:   "c1",
 					Parent:     nil,
 					Query: Query{
 						c:            c,
 						collectionID: "c1",
-						parentPath:   "projects/P/databases/D",
+						parentPath:   "projects/P/databases/D/documents",
 						path:         "projects/P/databases/D/documents/c1",
 					},
 				},
diff --git a/firestore/genproto/test.pb.go b/firestore/genproto/test.pb.go
index 1c8cb4a..7f5bc24 100644
--- a/firestore/genproto/test.pb.go
+++ b/firestore/genproto/test.pb.go
@@ -7,7 +7,7 @@
 import fmt "fmt"
 import math "math"
 import timestamp "github.com/golang/protobuf/ptypes/timestamp"
-import v1beta1 "google.golang.org/genproto/googleapis/firestore/v1beta1"
+import v1 "google.golang.org/genproto/googleapis/firestore/v1"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -46,7 +46,7 @@
 	return proto.EnumName(DocChange_Kind_name, int32(x))
 }
 func (DocChange_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{19, 0}
+	return fileDescriptor_test_3f755a975e4c199e, []int{19, 0}
 }
 
 // A collection of tests.
@@ -61,7 +61,7 @@
 func (m *TestSuite) String() string { return proto.CompactTextString(m) }
 func (*TestSuite) ProtoMessage()    {}
 func (*TestSuite) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{0}
+	return fileDescriptor_test_3f755a975e4c199e, []int{0}
 }
 func (m *TestSuite) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TestSuite.Unmarshal(m, b)
@@ -110,7 +110,7 @@
 func (m *Test) String() string { return proto.CompactTextString(m) }
 func (*Test) ProtoMessage()    {}
 func (*Test) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{1}
+	return fileDescriptor_test_3f755a975e4c199e, []int{1}
 }
 func (m *Test) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Test.Unmarshal(m, b)
@@ -130,6 +130,13 @@
 
 var xxx_messageInfo_Test proto.InternalMessageInfo
 
+func (m *Test) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
 type isTest_Test interface {
 	isTest_Test()
 }
@@ -137,36 +144,50 @@
 type Test_Get struct {
 	Get *GetTest `protobuf:"bytes,2,opt,name=get,proto3,oneof"`
 }
+
 type Test_Create struct {
 	Create *CreateTest `protobuf:"bytes,3,opt,name=create,proto3,oneof"`
 }
+
 type Test_Set struct {
 	Set *SetTest `protobuf:"bytes,4,opt,name=set,proto3,oneof"`
 }
+
 type Test_Update struct {
 	Update *UpdateTest `protobuf:"bytes,5,opt,name=update,proto3,oneof"`
 }
+
 type Test_UpdatePaths struct {
 	UpdatePaths *UpdatePathsTest `protobuf:"bytes,6,opt,name=update_paths,json=updatePaths,proto3,oneof"`
 }
+
 type Test_Delete struct {
 	Delete *DeleteTest `protobuf:"bytes,7,opt,name=delete,proto3,oneof"`
 }
+
 type Test_Query struct {
 	Query *QueryTest `protobuf:"bytes,8,opt,name=query,proto3,oneof"`
 }
+
 type Test_Listen struct {
 	Listen *ListenTest `protobuf:"bytes,9,opt,name=listen,proto3,oneof"`
 }
 
-func (*Test_Get) isTest_Test()         {}
-func (*Test_Create) isTest_Test()      {}
-func (*Test_Set) isTest_Test()         {}
-func (*Test_Update) isTest_Test()      {}
+func (*Test_Get) isTest_Test() {}
+
+func (*Test_Create) isTest_Test() {}
+
+func (*Test_Set) isTest_Test() {}
+
+func (*Test_Update) isTest_Test() {}
+
 func (*Test_UpdatePaths) isTest_Test() {}
-func (*Test_Delete) isTest_Test()      {}
-func (*Test_Query) isTest_Test()       {}
-func (*Test_Listen) isTest_Test()      {}
+
+func (*Test_Delete) isTest_Test() {}
+
+func (*Test_Query) isTest_Test() {}
+
+func (*Test_Listen) isTest_Test() {}
 
 func (m *Test) GetTest() isTest_Test {
 	if m != nil {
@@ -175,13 +196,6 @@
 	return nil
 }
 
-func (m *Test) GetDescription() string {
-	if m != nil {
-		return m.Description
-	}
-	return ""
-}
-
 func (m *Test) GetGet() *GetTest {
 	if x, ok := m.GetTest().(*Test_Get); ok {
 		return x.Get
@@ -431,17 +445,17 @@
 	// The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d"
 	DocRefPath string `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
 	// The request that the call should send to the Firestore service.
-	Request              *v1beta1.GetDocumentRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	Request              *v1.GetDocumentRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
 }
 
 func (m *GetTest) Reset()         { *m = GetTest{} }
 func (m *GetTest) String() string { return proto.CompactTextString(m) }
 func (*GetTest) ProtoMessage()    {}
 func (*GetTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{2}
+	return fileDescriptor_test_3f755a975e4c199e, []int{2}
 }
 func (m *GetTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GetTest.Unmarshal(m, b)
@@ -468,7 +482,7 @@
 	return ""
 }
 
-func (m *GetTest) GetRequest() *v1beta1.GetDocumentRequest {
+func (m *GetTest) GetRequest() *v1.GetDocumentRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -484,7 +498,7 @@
 	// (i.e. digit strings) should be treated as integers.
 	JsonData string `protobuf:"bytes,2,opt,name=json_data,json=jsonData,proto3" json:"json_data,omitempty"`
 	// The request that the call should generate.
-	Request *v1beta1.CommitRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"`
+	Request *v1.CommitRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"`
 	// If true, the call should result in an error without generating a request.
 	// If this is true, request should not be set.
 	IsError              bool     `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
@@ -497,7 +511,7 @@
 func (m *CreateTest) String() string { return proto.CompactTextString(m) }
 func (*CreateTest) ProtoMessage()    {}
 func (*CreateTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{3}
+	return fileDescriptor_test_3f755a975e4c199e, []int{3}
 }
 func (m *CreateTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CreateTest.Unmarshal(m, b)
@@ -531,7 +545,7 @@
 	return ""
 }
 
-func (m *CreateTest) GetRequest() *v1beta1.CommitRequest {
+func (m *CreateTest) GetRequest() *v1.CommitRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -547,21 +561,21 @@
 
 // A call to DocumentRef.Set.
 type SetTest struct {
-	DocRefPath           string                 `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
-	Option               *SetOption             `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
-	JsonData             string                 `protobuf:"bytes,3,opt,name=json_data,json=jsonData,proto3" json:"json_data,omitempty"`
-	Request              *v1beta1.CommitRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"`
-	IsError              bool                   `protobuf:"varint,5,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	DocRefPath           string            `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
+	Option               *SetOption        `protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
+	JsonData             string            `protobuf:"bytes,3,opt,name=json_data,json=jsonData,proto3" json:"json_data,omitempty"`
+	Request              *v1.CommitRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"`
+	IsError              bool              `protobuf:"varint,5,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *SetTest) Reset()         { *m = SetTest{} }
 func (m *SetTest) String() string { return proto.CompactTextString(m) }
 func (*SetTest) ProtoMessage()    {}
 func (*SetTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{4}
+	return fileDescriptor_test_3f755a975e4c199e, []int{4}
 }
 func (m *SetTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SetTest.Unmarshal(m, b)
@@ -602,7 +616,7 @@
 	return ""
 }
 
-func (m *SetTest) GetRequest() *v1beta1.CommitRequest {
+func (m *SetTest) GetRequest() *v1.CommitRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -619,21 +633,21 @@
 // A call to the form of DocumentRef.Update that represents the data as a map
 // or dictionary.
 type UpdateTest struct {
-	DocRefPath           string                 `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
-	Precondition         *v1beta1.Precondition  `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
-	JsonData             string                 `protobuf:"bytes,3,opt,name=json_data,json=jsonData,proto3" json:"json_data,omitempty"`
-	Request              *v1beta1.CommitRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"`
-	IsError              bool                   `protobuf:"varint,5,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	DocRefPath           string            `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
+	Precondition         *v1.Precondition  `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
+	JsonData             string            `protobuf:"bytes,3,opt,name=json_data,json=jsonData,proto3" json:"json_data,omitempty"`
+	Request              *v1.CommitRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"`
+	IsError              bool              `protobuf:"varint,5,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *UpdateTest) Reset()         { *m = UpdateTest{} }
 func (m *UpdateTest) String() string { return proto.CompactTextString(m) }
 func (*UpdateTest) ProtoMessage()    {}
 func (*UpdateTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{5}
+	return fileDescriptor_test_3f755a975e4c199e, []int{5}
 }
 func (m *UpdateTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdateTest.Unmarshal(m, b)
@@ -660,7 +674,7 @@
 	return ""
 }
 
-func (m *UpdateTest) GetPrecondition() *v1beta1.Precondition {
+func (m *UpdateTest) GetPrecondition() *v1.Precondition {
 	if m != nil {
 		return m.Precondition
 	}
@@ -674,7 +688,7 @@
 	return ""
 }
 
-func (m *UpdateTest) GetRequest() *v1beta1.CommitRequest {
+func (m *UpdateTest) GetRequest() *v1.CommitRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -691,23 +705,23 @@
 // A call to the form of DocumentRef.Update that represents the data as a list
 // of field paths and their values.
 type UpdatePathsTest struct {
-	DocRefPath   string                `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
-	Precondition *v1beta1.Precondition `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
+	DocRefPath   string           `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
+	Precondition *v1.Precondition `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
 	// parallel sequences: field_paths[i] corresponds to json_values[i]
-	FieldPaths           []*FieldPath           `protobuf:"bytes,3,rep,name=field_paths,json=fieldPaths,proto3" json:"field_paths,omitempty"`
-	JsonValues           []string               `protobuf:"bytes,4,rep,name=json_values,json=jsonValues,proto3" json:"json_values,omitempty"`
-	Request              *v1beta1.CommitRequest `protobuf:"bytes,5,opt,name=request,proto3" json:"request,omitempty"`
-	IsError              bool                   `protobuf:"varint,6,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	FieldPaths           []*FieldPath      `protobuf:"bytes,3,rep,name=field_paths,json=fieldPaths,proto3" json:"field_paths,omitempty"`
+	JsonValues           []string          `protobuf:"bytes,4,rep,name=json_values,json=jsonValues,proto3" json:"json_values,omitempty"`
+	Request              *v1.CommitRequest `protobuf:"bytes,5,opt,name=request,proto3" json:"request,omitempty"`
+	IsError              bool              `protobuf:"varint,6,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *UpdatePathsTest) Reset()         { *m = UpdatePathsTest{} }
 func (m *UpdatePathsTest) String() string { return proto.CompactTextString(m) }
 func (*UpdatePathsTest) ProtoMessage()    {}
 func (*UpdatePathsTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{6}
+	return fileDescriptor_test_3f755a975e4c199e, []int{6}
 }
 func (m *UpdatePathsTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_UpdatePathsTest.Unmarshal(m, b)
@@ -734,7 +748,7 @@
 	return ""
 }
 
-func (m *UpdatePathsTest) GetPrecondition() *v1beta1.Precondition {
+func (m *UpdatePathsTest) GetPrecondition() *v1.Precondition {
 	if m != nil {
 		return m.Precondition
 	}
@@ -755,7 +769,7 @@
 	return nil
 }
 
-func (m *UpdatePathsTest) GetRequest() *v1beta1.CommitRequest {
+func (m *UpdatePathsTest) GetRequest() *v1.CommitRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -771,20 +785,20 @@
 
 // A call to DocmentRef.Delete
 type DeleteTest struct {
-	DocRefPath           string                 `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
-	Precondition         *v1beta1.Precondition  `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
-	Request              *v1beta1.CommitRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"`
-	IsError              bool                   `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	DocRefPath           string            `protobuf:"bytes,1,opt,name=doc_ref_path,json=docRefPath,proto3" json:"doc_ref_path,omitempty"`
+	Precondition         *v1.Precondition  `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition,omitempty"`
+	Request              *v1.CommitRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"`
+	IsError              bool              `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *DeleteTest) Reset()         { *m = DeleteTest{} }
 func (m *DeleteTest) String() string { return proto.CompactTextString(m) }
 func (*DeleteTest) ProtoMessage()    {}
 func (*DeleteTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{7}
+	return fileDescriptor_test_3f755a975e4c199e, []int{7}
 }
 func (m *DeleteTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeleteTest.Unmarshal(m, b)
@@ -811,14 +825,14 @@
 	return ""
 }
 
-func (m *DeleteTest) GetPrecondition() *v1beta1.Precondition {
+func (m *DeleteTest) GetPrecondition() *v1.Precondition {
 	if m != nil {
 		return m.Precondition
 	}
 	return nil
 }
 
-func (m *DeleteTest) GetRequest() *v1beta1.CommitRequest {
+func (m *DeleteTest) GetRequest() *v1.CommitRequest {
 	if m != nil {
 		return m.Request
 	}
@@ -845,7 +859,7 @@
 func (m *SetOption) String() string { return proto.CompactTextString(m) }
 func (*SetOption) ProtoMessage()    {}
 func (*SetOption) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{8}
+	return fileDescriptor_test_3f755a975e4c199e, []int{8}
 }
 func (m *SetOption) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SetOption.Unmarshal(m, b)
@@ -880,20 +894,20 @@
 }
 
 type QueryTest struct {
-	CollPath             string                   `protobuf:"bytes,1,opt,name=coll_path,json=collPath,proto3" json:"coll_path,omitempty"`
-	Clauses              []*Clause                `protobuf:"bytes,2,rep,name=clauses,proto3" json:"clauses,omitempty"`
-	Query                *v1beta1.StructuredQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
-	IsError              bool                     `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	CollPath             string              `protobuf:"bytes,1,opt,name=coll_path,json=collPath,proto3" json:"coll_path,omitempty"`
+	Clauses              []*Clause           `protobuf:"bytes,2,rep,name=clauses,proto3" json:"clauses,omitempty"`
+	Query                *v1.StructuredQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
+	IsError              bool                `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
 func (m *QueryTest) Reset()         { *m = QueryTest{} }
 func (m *QueryTest) String() string { return proto.CompactTextString(m) }
 func (*QueryTest) ProtoMessage()    {}
 func (*QueryTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{9}
+	return fileDescriptor_test_3f755a975e4c199e, []int{9}
 }
 func (m *QueryTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_QueryTest.Unmarshal(m, b)
@@ -927,7 +941,7 @@
 	return nil
 }
 
-func (m *QueryTest) GetQuery() *v1beta1.StructuredQuery {
+func (m *QueryTest) GetQuery() *v1.StructuredQuery {
 	if m != nil {
 		return m.Query
 	}
@@ -962,7 +976,7 @@
 func (m *Clause) String() string { return proto.CompactTextString(m) }
 func (*Clause) ProtoMessage()    {}
 func (*Clause) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{10}
+	return fileDescriptor_test_3f755a975e4c199e, []int{10}
 }
 func (m *Clause) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Clause.Unmarshal(m, b)
@@ -989,40 +1003,56 @@
 type Clause_Select struct {
 	Select *Select `protobuf:"bytes,1,opt,name=select,proto3,oneof"`
 }
+
 type Clause_Where struct {
 	Where *Where `protobuf:"bytes,2,opt,name=where,proto3,oneof"`
 }
+
 type Clause_OrderBy struct {
 	OrderBy *OrderBy `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3,oneof"`
 }
+
 type Clause_Offset struct {
 	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3,oneof"`
 }
+
 type Clause_Limit struct {
 	Limit int32 `protobuf:"varint,5,opt,name=limit,proto3,oneof"`
 }
+
 type Clause_StartAt struct {
 	StartAt *Cursor `protobuf:"bytes,6,opt,name=start_at,json=startAt,proto3,oneof"`
 }
+
 type Clause_StartAfter struct {
 	StartAfter *Cursor `protobuf:"bytes,7,opt,name=start_after,json=startAfter,proto3,oneof"`
 }
+
 type Clause_EndAt struct {
 	EndAt *Cursor `protobuf:"bytes,8,opt,name=end_at,json=endAt,proto3,oneof"`
 }
+
 type Clause_EndBefore struct {
 	EndBefore *Cursor `protobuf:"bytes,9,opt,name=end_before,json=endBefore,proto3,oneof"`
 }
 
-func (*Clause_Select) isClause_Clause()     {}
-func (*Clause_Where) isClause_Clause()      {}
-func (*Clause_OrderBy) isClause_Clause()    {}
-func (*Clause_Offset) isClause_Clause()     {}
-func (*Clause_Limit) isClause_Clause()      {}
-func (*Clause_StartAt) isClause_Clause()    {}
+func (*Clause_Select) isClause_Clause() {}
+
+func (*Clause_Where) isClause_Clause() {}
+
+func (*Clause_OrderBy) isClause_Clause() {}
+
+func (*Clause_Offset) isClause_Clause() {}
+
+func (*Clause_Limit) isClause_Clause() {}
+
+func (*Clause_StartAt) isClause_Clause() {}
+
 func (*Clause_StartAfter) isClause_Clause() {}
-func (*Clause_EndAt) isClause_Clause()      {}
-func (*Clause_EndBefore) isClause_Clause()  {}
+
+func (*Clause_EndAt) isClause_Clause() {}
+
+func (*Clause_EndBefore) isClause_Clause() {}
 
 func (m *Clause) GetClause() isClause_Clause {
 	if m != nil {
@@ -1302,7 +1332,7 @@
 func (m *Select) String() string { return proto.CompactTextString(m) }
 func (*Select) ProtoMessage()    {}
 func (*Select) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{11}
+	return fileDescriptor_test_3f755a975e4c199e, []int{11}
 }
 func (m *Select) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Select.Unmarshal(m, b)
@@ -1342,7 +1372,7 @@
 func (m *Where) String() string { return proto.CompactTextString(m) }
 func (*Where) ProtoMessage()    {}
 func (*Where) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{12}
+	return fileDescriptor_test_3f755a975e4c199e, []int{12}
 }
 func (m *Where) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Where.Unmarshal(m, b)
@@ -1395,7 +1425,7 @@
 func (m *OrderBy) String() string { return proto.CompactTextString(m) }
 func (*OrderBy) ProtoMessage()    {}
 func (*OrderBy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{13}
+	return fileDescriptor_test_3f755a975e4c199e, []int{13}
 }
 func (m *OrderBy) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OrderBy.Unmarshal(m, b)
@@ -1442,7 +1472,7 @@
 func (m *Cursor) String() string { return proto.CompactTextString(m) }
 func (*Cursor) ProtoMessage()    {}
 func (*Cursor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{14}
+	return fileDescriptor_test_3f755a975e4c199e, []int{14}
 }
 func (m *Cursor) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Cursor.Unmarshal(m, b)
@@ -1488,7 +1518,7 @@
 func (m *DocSnapshot) String() string { return proto.CompactTextString(m) }
 func (*DocSnapshot) ProtoMessage()    {}
 func (*DocSnapshot) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{15}
+	return fileDescriptor_test_3f755a975e4c199e, []int{15}
 }
 func (m *DocSnapshot) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DocSnapshot.Unmarshal(m, b)
@@ -1533,7 +1563,7 @@
 func (m *FieldPath) String() string { return proto.CompactTextString(m) }
 func (*FieldPath) ProtoMessage()    {}
 func (*FieldPath) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{16}
+	return fileDescriptor_test_3f755a975e4c199e, []int{16}
 }
 func (m *FieldPath) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FieldPath.Unmarshal(m, b)
@@ -1572,19 +1602,19 @@
 // should either change their client's ID for testing,
 // or change the ID in the tests before running them.
 type ListenTest struct {
-	Responses            []*v1beta1.ListenResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"`
-	Snapshots            []*Snapshot               `protobuf:"bytes,2,rep,name=snapshots,proto3" json:"snapshots,omitempty"`
-	IsError              bool                      `protobuf:"varint,3,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	Responses            []*v1.ListenResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"`
+	Snapshots            []*Snapshot          `protobuf:"bytes,2,rep,name=snapshots,proto3" json:"snapshots,omitempty"`
+	IsError              bool                 `protobuf:"varint,3,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *ListenTest) Reset()         { *m = ListenTest{} }
 func (m *ListenTest) String() string { return proto.CompactTextString(m) }
 func (*ListenTest) ProtoMessage()    {}
 func (*ListenTest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{17}
+	return fileDescriptor_test_3f755a975e4c199e, []int{17}
 }
 func (m *ListenTest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ListenTest.Unmarshal(m, b)
@@ -1604,7 +1634,7 @@
 
 var xxx_messageInfo_ListenTest proto.InternalMessageInfo
 
-func (m *ListenTest) GetResponses() []*v1beta1.ListenResponse {
+func (m *ListenTest) GetResponses() []*v1.ListenResponse {
 	if m != nil {
 		return m.Responses
 	}
@@ -1626,7 +1656,7 @@
 }
 
 type Snapshot struct {
-	Docs                 []*v1beta1.Document  `protobuf:"bytes,1,rep,name=docs,proto3" json:"docs,omitempty"`
+	Docs                 []*v1.Document       `protobuf:"bytes,1,rep,name=docs,proto3" json:"docs,omitempty"`
 	Changes              []*DocChange         `protobuf:"bytes,2,rep,name=changes,proto3" json:"changes,omitempty"`
 	ReadTime             *timestamp.Timestamp `protobuf:"bytes,3,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
@@ -1638,7 +1668,7 @@
 func (m *Snapshot) String() string { return proto.CompactTextString(m) }
 func (*Snapshot) ProtoMessage()    {}
 func (*Snapshot) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{18}
+	return fileDescriptor_test_3f755a975e4c199e, []int{18}
 }
 func (m *Snapshot) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Snapshot.Unmarshal(m, b)
@@ -1658,7 +1688,7 @@
 
 var xxx_messageInfo_Snapshot proto.InternalMessageInfo
 
-func (m *Snapshot) GetDocs() []*v1beta1.Document {
+func (m *Snapshot) GetDocs() []*v1.Document {
 	if m != nil {
 		return m.Docs
 	}
@@ -1680,20 +1710,20 @@
 }
 
 type DocChange struct {
-	Kind                 DocChange_Kind    `protobuf:"varint,1,opt,name=kind,proto3,enum=tests.DocChange_Kind" json:"kind,omitempty"`
-	Doc                  *v1beta1.Document `protobuf:"bytes,2,opt,name=doc,proto3" json:"doc,omitempty"`
-	OldIndex             int32             `protobuf:"varint,3,opt,name=old_index,json=oldIndex,proto3" json:"old_index,omitempty"`
-	NewIndex             int32             `protobuf:"varint,4,opt,name=new_index,json=newIndex,proto3" json:"new_index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Kind                 DocChange_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=tests.DocChange_Kind" json:"kind,omitempty"`
+	Doc                  *v1.Document   `protobuf:"bytes,2,opt,name=doc,proto3" json:"doc,omitempty"`
+	OldIndex             int32          `protobuf:"varint,3,opt,name=old_index,json=oldIndex,proto3" json:"old_index,omitempty"`
+	NewIndex             int32          `protobuf:"varint,4,opt,name=new_index,json=newIndex,proto3" json:"new_index,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
 }
 
 func (m *DocChange) Reset()         { *m = DocChange{} }
 func (m *DocChange) String() string { return proto.CompactTextString(m) }
 func (*DocChange) ProtoMessage()    {}
 func (*DocChange) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_338de568ad9314f7, []int{19}
+	return fileDescriptor_test_3f755a975e4c199e, []int{19}
 }
 func (m *DocChange) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DocChange.Unmarshal(m, b)
@@ -1720,7 +1750,7 @@
 	return DocChange_KIND_UNSPECIFIED
 }
 
-func (m *DocChange) GetDoc() *v1beta1.Document {
+func (m *DocChange) GetDoc() *v1.Document {
 	if m != nil {
 		return m.Doc
 	}
@@ -1765,89 +1795,89 @@
 	proto.RegisterEnum("tests.DocChange_Kind", DocChange_Kind_name, DocChange_Kind_value)
 }
 
-func init() { proto.RegisterFile("test.proto", fileDescriptor_test_338de568ad9314f7) }
+func init() { proto.RegisterFile("test.proto", fileDescriptor_test_3f755a975e4c199e) }
 
-var fileDescriptor_test_338de568ad9314f7 = []byte{
-	// 1292 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4d, 0x73, 0xdb, 0xc4,
-	0x1b, 0xaf, 0x6c, 0x4b, 0x96, 0x1e, 0xe7, 0xdf, 0xe6, 0xbf, 0x53, 0x3a, 0x26, 0xc0, 0x34, 0xd5,
-	0x94, 0xc6, 0x6d, 0xc1, 0xa1, 0xe1, 0xed, 0xc0, 0x0c, 0x4c, 0x12, 0x3b, 0x6d, 0x28, 0x6d, 0x82,
-	0xdc, 0x96, 0x4b, 0x66, 0x8c, 0xa2, 0x5d, 0x27, 0x02, 0x59, 0xeb, 0xee, 0xae, 0xfa, 0xf2, 0x39,
-	0xb8, 0x73, 0x65, 0x60, 0x86, 0x03, 0x5f, 0x83, 0x13, 0x47, 0x3e, 0x03, 0x77, 0x38, 0x33, 0xfb,
-	0x26, 0x59, 0x69, 0x5d, 0x72, 0x28, 0xe5, 0xb6, 0xfb, 0x3c, 0xbf, 0xe7, 0xfd, 0x65, 0x25, 0x00,
-	0x41, 0xb8, 0xe8, 0xcf, 0x18, 0x15, 0x14, 0xb9, 0xf2, 0xcc, 0x57, 0xde, 0x3e, 0xa2, 0xf4, 0x28,
-	0x23, 0xeb, 0x93, 0x94, 0x11, 0x2e, 0x28, 0x23, 0xeb, 0x8f, 0x6e, 0x1c, 0x12, 0x11, 0xdf, 0x58,
-	0x4f, 0xe8, 0x74, 0x4a, 0x73, 0x8d, 0x5e, 0x59, 0x5b, 0x08, 0xc3, 0x34, 0x29, 0xa6, 0x24, 0x37,
-	0x6a, 0x57, 0x7a, 0x0b, 0x81, 0x25, 0xc5, 0x20, 0x2f, 0x2f, 0x44, 0x3e, 0x2c, 0x08, 0x7b, 0x6a,
-	0x50, 0x17, 0x0d, 0x4a, 0xdd, 0x0e, 0x8b, 0xc9, 0xba, 0x48, 0xa7, 0x84, 0x8b, 0x78, 0x3a, 0xd3,
-	0x80, 0xb0, 0x0f, 0xc1, 0x3d, 0xc2, 0xc5, 0xa8, 0x48, 0x05, 0x41, 0x97, 0x40, 0x87, 0xd5, 0x75,
-	0x56, 0x9b, 0xbd, 0xce, 0x46, 0xa7, 0xaf, 0x6e, 0x7d, 0x09, 0x88, 0x34, 0x27, 0xfc, 0xae, 0x09,
-	0x2d, 0x79, 0x47, 0xab, 0xd0, 0xc1, 0x84, 0x27, 0x2c, 0x9d, 0x89, 0x94, 0xe6, 0x5d, 0x67, 0xd5,
-	0xe9, 0x05, 0xd1, 0x3c, 0x09, 0x85, 0xd0, 0x3c, 0x22, 0xa2, 0xdb, 0x58, 0x75, 0x7a, 0x9d, 0x8d,
-	0xb3, 0x46, 0xd7, 0x4d, 0x22, 0xa4, 0xf8, 0xad, 0x33, 0x91, 0x64, 0xa2, 0xeb, 0xe0, 0x25, 0x8c,
-	0xc4, 0x82, 0x74, 0x9b, 0x0a, 0xf6, 0x7f, 0x03, 0xdb, 0x56, 0x44, 0x83, 0x34, 0x10, 0xa9, 0x90,
-	0x13, 0xd1, 0x6d, 0xd5, 0x14, 0x8e, 0x2a, 0x85, 0x5c, 0x2b, 0x2c, 0x66, 0x58, 0x2a, 0x74, 0x6b,
-	0x0a, 0xef, 0x2b, 0xa2, 0x55, 0xa8, 0x21, 0xe8, 0x13, 0x58, 0xd2, 0xa7, 0xf1, 0x2c, 0x16, 0xc7,
-	0xbc, 0xeb, 0x29, 0x91, 0x0b, 0x35, 0x91, 0x7d, 0xc9, 0x31, 0x72, 0x9d, 0xa2, 0x22, 0x49, 0x4b,
-	0x98, 0x64, 0x44, 0x90, 0x6e, 0xbb, 0x66, 0x69, 0xa0, 0x88, 0xd6, 0x92, 0x86, 0xa0, 0x1e, 0xb8,
-	0xaa, 0x2c, 0x5d, 0x5f, 0x61, 0x97, 0x0d, 0xf6, 0x4b, 0x49, 0x33, 0x50, 0x0d, 0x90, 0x6a, 0xb3,
-	0x94, 0x0b, 0x92, 0x77, 0x83, 0x9a, 0xda, 0x2f, 0x14, 0xd1, 0xaa, 0xd5, 0x90, 0x2d, 0x0f, 0x5a,
-	0x92, 0x1b, 0x72, 0x68, 0x9b, 0xc4, 0xa2, 0x55, 0x58, 0xc2, 0x34, 0x19, 0x33, 0x32, 0x51, 0x41,
-	0x99, 0xc2, 0x00, 0xa6, 0x49, 0x44, 0x26, 0xd2, 0x73, 0xb4, 0x03, 0x6d, 0x46, 0x1e, 0x16, 0x84,
-	0xdb, 0xda, 0xbc, 0xd3, 0xd7, 0x5d, 0xd2, 0xaf, 0x7a, 0xcc, 0xf4, 0x92, 0x2c, 0xd7, 0xc0, 0x74,
-	0x68, 0xa4, 0x65, 0x22, 0x2b, 0x1c, 0xfe, 0xe8, 0x00, 0x54, 0x75, 0x3a, 0x85, 0xe1, 0x37, 0x20,
-	0xf8, 0x86, 0xd3, 0x7c, 0x8c, 0x63, 0x11, 0x2b, 0xd3, 0x41, 0xe4, 0x4b, 0xc2, 0x20, 0x16, 0x31,
-	0xda, 0xac, 0xbc, 0xd2, 0xad, 0xb0, 0xb6, 0xd8, 0xab, 0x6d, 0x3a, 0x9d, 0xa6, 0xcf, 0x38, 0x84,
-	0x5e, 0x07, 0x3f, 0xe5, 0x63, 0xc2, 0x18, 0x65, 0xaa, 0x49, 0xfc, 0xa8, 0x9d, 0xf2, 0xa1, 0xbc,
-	0x86, 0xbf, 0x39, 0xd0, 0x1e, 0x9d, 0x3a, 0x43, 0x3d, 0xf0, 0xa8, 0x6e, 0xeb, 0x46, 0xad, 0x5c,
-	0x23, 0x22, 0xf6, 0x14, 0x3d, 0x32, 0xfc, 0x7a, 0x48, 0xcd, 0xc5, 0x21, 0xb5, 0x5e, 0x42, 0x48,
-	0x6e, 0x3d, 0xa4, 0x3f, 0x1d, 0x80, 0xaa, 0xab, 0x4f, 0x11, 0xd5, 0xe7, 0xb0, 0x34, 0x63, 0x24,
-	0xa1, 0x39, 0x4e, 0xe7, 0x62, 0xbb, 0xb2, 0xd8, 0xa7, 0xfd, 0x39, 0x74, 0x54, 0x93, 0xfd, 0x2f,
-	0xe3, 0xfe, 0xa5, 0x01, 0xe7, 0x4e, 0x8c, 0xe6, 0x2b, 0x0e, 0xfe, 0x06, 0x74, 0x26, 0x29, 0xc9,
-	0xb0, 0xd9, 0x1a, 0x4d, 0xb5, 0x2c, 0x6d, 0x8f, 0xec, 0x48, 0x8e, 0x34, 0x19, 0xc1, 0xc4, 0x1e,
-	0x39, 0xba, 0x08, 0x1d, 0x95, 0xaf, 0x47, 0x71, 0x56, 0x10, 0xde, 0x6d, 0xad, 0x36, 0xa5, 0x7f,
-	0x92, 0xf4, 0x40, 0x51, 0xe6, 0x73, 0xe6, 0xbe, 0x84, 0x9c, 0x79, 0xf5, 0x9c, 0xfd, 0xee, 0x00,
-	0x54, 0x7b, 0xe9, 0x15, 0xa7, 0xeb, 0xdf, 0x9d, 0xec, 0x9b, 0x10, 0x94, 0x63, 0x89, 0x96, 0xa1,
-	0x19, 0x67, 0x99, 0x8a, 0xc7, 0x8f, 0xe4, 0x51, 0x8e, 0xb2, 0x2a, 0x03, 0xef, 0x36, 0x16, 0x94,
-	0xc9, 0xf0, 0xc3, 0x9f, 0x1d, 0x08, 0xca, 0x7d, 0x2c, 0x1b, 0x3c, 0xa1, 0x59, 0x36, 0x9f, 0x1f,
-	0x5f, 0x12, 0x54, 0x76, 0xd6, 0xa0, 0x9d, 0x64, 0x71, 0xc1, 0x89, 0xd5, 0xfa, 0x3f, 0xfb, 0x6c,
-	0x29, 0x6a, 0x64, 0xb9, 0xe8, 0x33, 0xbb, 0xf6, 0x75, 0xe0, 0x57, 0x17, 0x07, 0x3e, 0x12, 0xac,
-	0x48, 0x44, 0xc1, 0x08, 0x56, 0x3e, 0xd8, 0xd7, 0xe0, 0x05, 0x81, 0xff, 0xd5, 0x00, 0x4f, 0xdb,
-	0x43, 0x6b, 0xe0, 0x71, 0x92, 0x91, 0x44, 0x28, 0x4f, 0x2b, 0x77, 0x46, 0x8a, 0x28, 0xdf, 0x0b,
-	0xcd, 0x46, 0x97, 0xc1, 0x7d, 0x7c, 0x4c, 0x18, 0x31, 0xf5, 0x5c, 0x32, 0xb8, 0xaf, 0x24, 0x4d,
-	0x3e, 0x41, 0x8a, 0x89, 0xae, 0x83, 0x4f, 0x19, 0x26, 0x6c, 0x7c, 0x68, 0x1d, 0xb7, 0x8f, 0xed,
-	0x9e, 0x24, 0x6f, 0x3d, 0xbd, 0x75, 0x26, 0x6a, 0x53, 0x7d, 0x44, 0x5d, 0xf0, 0xe8, 0x64, 0x62,
-	0xdf, 0x65, 0x57, 0x1a, 0xd3, 0x77, 0x74, 0x01, 0xdc, 0x2c, 0x9d, 0xa6, 0xba, 0xa1, 0x25, 0x43,
-	0x5f, 0xd1, 0x35, 0xf0, 0xb9, 0x88, 0x99, 0x18, 0xc7, 0xc2, 0xbc, 0xb8, 0x65, 0xfa, 0x0a, 0xc6,
-	0x29, 0x93, 0xda, 0x15, 0x60, 0x53, 0xa0, 0xf7, 0xa0, 0x63, 0xb0, 0x13, 0x41, 0x98, 0x79, 0x69,
-	0x9f, 0x81, 0x83, 0x86, 0x4b, 0x08, 0xba, 0x02, 0x1e, 0xc9, 0xb1, 0xd4, 0xed, 0x3f, 0x1f, 0xec,
-	0x92, 0x1c, 0x6f, 0x0a, 0xd4, 0x07, 0x90, 0xb8, 0x43, 0x32, 0xa1, 0x8c, 0x98, 0xb7, 0xf6, 0x19,
-	0x6c, 0x40, 0x72, 0xbc, 0xa5, 0x10, 0x5b, 0x3e, 0x78, 0xba, 0xaa, 0xe1, 0x06, 0x78, 0x3a, 0xb1,
-	0x73, 0xcd, 0xe5, 0xfc, 0x43, 0x73, 0x1d, 0x80, 0xab, 0x92, 0x8c, 0x2e, 0x43, 0xab, 0x6c, 0xa9,
-	0xe7, 0x09, 0x28, 0x2e, 0x3a, 0x0b, 0x0d, 0x3a, 0x33, 0x4f, 0x64, 0x83, 0xce, 0xd0, 0x5b, 0x00,
-	0xd5, 0xfa, 0x30, 0xfb, 0x36, 0x28, 0xb7, 0x47, 0x78, 0x07, 0xda, 0xa6, 0x32, 0xa7, 0xd4, 0xff,
-	0x26, 0x04, 0x38, 0x65, 0x24, 0x29, 0x67, 0x3b, 0x88, 0x2a, 0x42, 0xf8, 0x35, 0x78, 0x3a, 0x03,
-	0xe8, 0x43, 0xbd, 0x28, 0x78, 0x1e, 0xcf, 0xf8, 0x31, 0xb5, 0xed, 0x85, 0xec, 0x97, 0x0e, 0x4d,
-	0x46, 0x86, 0x13, 0x75, 0x70, 0x75, 0x39, 0xb9, 0xed, 0x1a, 0x27, 0xb7, 0x5d, 0xf8, 0x29, 0x74,
-	0xe6, 0x84, 0x11, 0x9a, 0x73, 0x3a, 0x30, 0x2e, 0xbe, 0xe8, 0x63, 0x21, 0xbc, 0x04, 0x41, 0x19,
-	0x12, 0x3a, 0x0f, 0xae, 0xca, 0xb2, 0x2a, 0x42, 0x10, 0xe9, 0x4b, 0xf8, 0xbd, 0x03, 0x50, 0x7d,
-	0x33, 0xa1, 0x1d, 0x08, 0x18, 0xe1, 0x33, 0x9a, 0xcb, 0xa1, 0xd5, 0xd5, 0xea, 0x2d, 0x9e, 0x46,
-	0x2d, 0x18, 0x19, 0x81, 0xa8, 0x12, 0x45, 0xef, 0x42, 0x60, 0xb3, 0x61, 0x87, 0xff, 0x9c, 0x9d,
-	0x36, 0x9b, 0x8b, 0x0a, 0x51, 0x9b, 0xdf, 0x66, 0x7d, 0x7e, 0x7f, 0x70, 0xc0, 0x2f, 0x33, 0xf0,
-	0x11, 0xb4, 0x30, 0x4d, 0xac, 0x67, 0xe1, 0x62, 0xcf, 0xca, 0xaf, 0x31, 0x85, 0x47, 0xd7, 0xa0,
-	0x9d, 0x1c, 0xc7, 0xf9, 0x11, 0x39, 0xb9, 0xdf, 0x06, 0x34, 0xd9, 0x56, 0x8c, 0xc8, 0x02, 0xd0,
-	0xc7, 0x32, 0x05, 0x31, 0x1e, 0xcb, 0x5f, 0x00, 0x33, 0xd7, 0x2b, 0xd6, 0x90, 0xfd, 0x3f, 0xe8,
-	0xdf, 0xb3, 0xff, 0x07, 0x91, 0x2f, 0xc1, 0xf2, 0x1a, 0xfe, 0xe1, 0x40, 0x50, 0xea, 0x43, 0x57,
-	0xa1, 0xf5, 0x6d, 0x9a, 0x63, 0x55, 0xac, 0xb3, 0x1b, 0xaf, 0x9d, 0xb4, 0xd7, 0xbf, 0x9d, 0xe6,
-	0x38, 0x52, 0x10, 0xf4, 0x01, 0x34, 0x31, 0x4d, 0xcc, 0xb2, 0x39, 0x4d, 0x50, 0x12, 0x2e, 0x2b,
-	0x4f, 0x33, 0x3c, 0x4e, 0x73, 0x4c, 0x9e, 0x28, 0x3f, 0xdd, 0xc8, 0xa7, 0x19, 0xde, 0x95, 0x77,
-	0xc9, 0xcc, 0xc9, 0x63, 0xc3, 0x6c, 0x69, 0x66, 0x4e, 0x1e, 0x2b, 0x66, 0xb8, 0x05, 0x2d, 0x69,
-	0x1d, 0x9d, 0x87, 0xe5, 0xdb, 0xbb, 0x77, 0x07, 0xe3, 0xfb, 0x77, 0x47, 0xfb, 0xc3, 0xed, 0xdd,
-	0x9d, 0xdd, 0xe1, 0x60, 0xf9, 0x0c, 0x0a, 0xc0, 0xdd, 0x1c, 0x0c, 0x86, 0x83, 0x65, 0x07, 0x75,
-	0xa0, 0x1d, 0x0d, 0xef, 0xec, 0x3d, 0x18, 0x0e, 0x96, 0x1b, 0x68, 0x09, 0xfc, 0x3b, 0x7b, 0x03,
-	0x8d, 0x6a, 0x6e, 0x3d, 0x81, 0x2b, 0x09, 0x9d, 0x5a, 0x5f, 0x93, 0x8c, 0x16, 0x78, 0xce, 0xe3,
-	0x84, 0xe6, 0x13, 0xca, 0xa6, 0x71, 0x9e, 0x90, 0x9f, 0x1a, 0xe1, 0x4d, 0x0d, 0xda, 0x56, 0xa0,
-	0x9d, 0x12, 0x74, 0x4f, 0x65, 0x64, 0x5f, 0xa6, 0xf4, 0xd7, 0x46, 0x4f, 0x83, 0x0e, 0x14, 0xe8,
-	0xa0, 0x04, 0x1d, 0x28, 0xd0, 0xc1, 0x76, 0xa5, 0xef, 0xd0, 0x53, 0x45, 0x78, 0xff, 0xef, 0x00,
-	0x00, 0x00, 0xff, 0xff, 0xc2, 0x7a, 0x63, 0xd5, 0x67, 0x0e, 0x00, 0x00,
+var fileDescriptor_test_3f755a975e4c199e = []byte{
+	// 1284 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x96, 0x4f, 0x6f, 0xdc, 0x44,
+	0x14, 0xc0, 0xeb, 0xdd, 0xb5, 0xd7, 0x7e, 0x1b, 0xda, 0x30, 0x2a, 0xd5, 0x12, 0xa8, 0xba, 0x75,
+	0xab, 0x36, 0xb4, 0x62, 0x43, 0x82, 0x10, 0x12, 0x20, 0xa4, 0x24, 0xbb, 0x6d, 0xa3, 0xd2, 0x26,
+	0x78, 0xdb, 0x72, 0x89, 0xb4, 0x38, 0x9e, 0xd9, 0xc4, 0xe0, 0xf5, 0x6c, 0x67, 0xc6, 0xfd, 0xf3,
+	0x39, 0x38, 0x71, 0x45, 0x48, 0x20, 0x3e, 0x0a, 0x48, 0x7c, 0x0b, 0x4e, 0xdc, 0x39, 0xa3, 0xf9,
+	0x67, 0xaf, 0x93, 0x6d, 0x1b, 0xa9, 0xa2, 0xdc, 0x3c, 0xef, 0xfd, 0xe6, 0xcd, 0xfb, 0x37, 0x6f,
+	0x0c, 0x20, 0x08, 0x17, 0xfd, 0x19, 0xa3, 0x82, 0x22, 0x57, 0x7e, 0xf3, 0x95, 0xde, 0x21, 0xa5,
+	0x87, 0x19, 0x59, 0x9b, 0xa4, 0x8c, 0x70, 0x41, 0x19, 0x59, 0x7b, 0xb2, 0xbe, 0x96, 0xd0, 0xe9,
+	0x94, 0xe6, 0x1a, 0x5c, 0x09, 0x17, 0x11, 0x98, 0x26, 0xc5, 0x94, 0xe4, 0xc6, 0xd8, 0xca, 0x95,
+	0x45, 0x4c, 0xb9, 0x30, 0xd0, 0xa5, 0x45, 0xd0, 0xe3, 0x82, 0xb0, 0xe7, 0xc7, 0x00, 0xb5, 0x3a,
+	0x28, 0x26, 0x6b, 0x22, 0x9d, 0x12, 0x2e, 0xe2, 0xe9, 0x4c, 0x03, 0x61, 0x1f, 0x82, 0x07, 0x84,
+	0x8b, 0x51, 0x91, 0x0a, 0x82, 0x2e, 0x83, 0x0e, 0xa1, 0xeb, 0xf4, 0x9a, 0xab, 0x9d, 0x8d, 0x4e,
+	0x5f, 0xad, 0xfa, 0x12, 0x88, 0xb4, 0x26, 0xfc, 0xa1, 0x09, 0x2d, 0xb9, 0x46, 0x3d, 0xe8, 0x60,
+	0xc2, 0x13, 0x96, 0xce, 0x44, 0x4a, 0xf3, 0xae, 0xd3, 0x73, 0x56, 0x83, 0x68, 0x5e, 0x84, 0x42,
+	0x68, 0x1e, 0x12, 0xd1, 0x6d, 0xf4, 0x9c, 0xd5, 0xce, 0xc6, 0x59, 0x63, 0xeb, 0x36, 0x11, 0x72,
+	0xfb, 0x9d, 0x33, 0x91, 0x54, 0xa2, 0x9b, 0xe0, 0x25, 0x8c, 0xc4, 0x82, 0x74, 0x9b, 0x0a, 0x7b,
+	0xdb, 0x60, 0xdb, 0x4a, 0x68, 0x48, 0x83, 0x48, 0x83, 0x9c, 0x88, 0x6e, 0xab, 0x66, 0x70, 0x54,
+	0x19, 0xe4, 0xda, 0x60, 0x31, 0xc3, 0xd2, 0xa0, 0x5b, 0x33, 0xf8, 0x50, 0x09, 0xad, 0x41, 0x8d,
+	0xa0, 0xcf, 0x61, 0x49, 0x7f, 0x8d, 0x67, 0xb1, 0x38, 0xe2, 0x5d, 0x4f, 0x6d, 0xb9, 0x50, 0xdb,
+	0xb2, 0x27, 0x35, 0x66, 0x5f, 0xa7, 0xa8, 0x44, 0xf2, 0x24, 0x4c, 0x32, 0x22, 0x48, 0xb7, 0x5d,
+	0x3b, 0x69, 0xa0, 0x84, 0xf6, 0x24, 0x8d, 0xa0, 0x55, 0x70, 0x55, 0x59, 0xba, 0xbe, 0x62, 0x97,
+	0x0d, 0xfb, 0xb5, 0x94, 0x19, 0x54, 0x03, 0xd2, 0x6c, 0x96, 0x72, 0x41, 0xf2, 0x6e, 0x50, 0x33,
+	0xfb, 0x95, 0x12, 0x5a, 0xb3, 0x1a, 0xd9, 0xf2, 0xa0, 0x25, 0xb5, 0x61, 0x0e, 0x6d, 0x93, 0x58,
+	0xd4, 0x83, 0x25, 0x4c, 0x93, 0x31, 0x23, 0x13, 0x15, 0x94, 0x29, 0x0c, 0x60, 0x9a, 0x44, 0x64,
+	0x22, 0x3d, 0x47, 0x9b, 0xd0, 0x66, 0xe4, 0x71, 0x41, 0xb8, 0xad, 0xcd, 0xf5, 0xbe, 0xee, 0x92,
+	0x7e, 0xd5, 0x5e, 0x4f, 0xd6, 0x65, 0xa5, 0x06, 0xa6, 0x25, 0x23, 0x8d, 0x47, 0x76, 0x5f, 0xf8,
+	0xb3, 0x03, 0x50, 0x95, 0xe8, 0x14, 0x67, 0xbe, 0x07, 0xc1, 0x77, 0x9c, 0xe6, 0x63, 0x1c, 0x8b,
+	0x58, 0x9d, 0x1a, 0x44, 0xbe, 0x14, 0x0c, 0x62, 0x11, 0xa3, 0x2f, 0x2a, 0x87, 0x74, 0x17, 0x84,
+	0x0b, 0x1d, 0xda, 0xa6, 0xd3, 0x69, 0x7a, 0xc2, 0x17, 0xf4, 0x2e, 0xf8, 0x29, 0x1f, 0x13, 0xc6,
+	0x28, 0x53, 0xad, 0xe1, 0x47, 0xed, 0x94, 0x0f, 0xe5, 0x32, 0xfc, 0xc3, 0x81, 0xf6, 0xe8, 0xd4,
+	0x79, 0x59, 0x05, 0x8f, 0xea, 0x66, 0x6e, 0xd4, 0x8a, 0x34, 0x22, 0x62, 0x57, 0xc9, 0x23, 0xa3,
+	0xaf, 0x47, 0xd3, 0x7c, 0x71, 0x34, 0xad, 0xd7, 0x8b, 0xc6, 0xad, 0x47, 0xf3, 0xb7, 0x03, 0x50,
+	0xb5, 0xf1, 0x29, 0x02, 0x1a, 0xc2, 0xd2, 0x8c, 0x91, 0x84, 0xe6, 0x38, 0x9d, 0x0b, 0xeb, 0xf2,
+	0x42, 0x77, 0xf6, 0xe6, 0xc0, 0xa8, 0xb6, 0xed, 0x7f, 0x8a, 0xf6, 0x97, 0x06, 0x9c, 0x3b, 0x76,
+	0x03, 0xdf, 0x5c, 0xc8, 0xeb, 0xd0, 0x99, 0xa4, 0x24, 0xc3, 0x66, 0x2e, 0x34, 0xd5, 0x38, 0xb4,
+	0xfd, 0x70, 0x4b, 0x6a, 0xe4, 0x69, 0x11, 0x4c, 0xec, 0x27, 0x47, 0x97, 0xa0, 0xa3, 0xb2, 0xf4,
+	0x24, 0xce, 0x0a, 0xc2, 0xbb, 0xad, 0x5e, 0x53, 0xba, 0x26, 0x45, 0x8f, 0x94, 0x64, 0x3e, 0x53,
+	0xee, 0xeb, 0x65, 0xca, 0xab, 0x67, 0xea, 0x4f, 0x07, 0xa0, 0x1a, 0x3a, 0x6f, 0x2e, 0x49, 0xff,
+	0xd9, 0xb5, 0xbd, 0x0d, 0x41, 0x79, 0xe7, 0xd0, 0x32, 0x34, 0xe3, 0x2c, 0x53, 0x51, 0xf8, 0x91,
+	0xfc, 0x94, 0xf7, 0x54, 0xe5, 0x9d, 0x77, 0x1b, 0x2f, 0xa8, 0x8b, 0xd1, 0x87, 0xbf, 0x3a, 0x10,
+	0x94, 0x23, 0x56, 0xf6, 0x71, 0x42, 0xb3, 0x6c, 0x3e, 0x2b, 0xbe, 0x14, 0xa8, 0x9c, 0x5c, 0x87,
+	0x76, 0x92, 0xc5, 0x05, 0x27, 0xd6, 0xea, 0x5b, 0xf6, 0x25, 0x52, 0xd2, 0xc8, 0x6a, 0xd1, 0x67,
+	0x76, 0x92, 0xeb, 0x98, 0xaf, 0x2e, 0x8c, 0x79, 0x24, 0x58, 0x91, 0x88, 0x82, 0x11, 0xac, 0x8e,
+	0xb7, 0xb3, 0xfd, 0x25, 0x31, 0xff, 0xd3, 0x00, 0x4f, 0x1f, 0x85, 0xae, 0x83, 0xc7, 0x49, 0x46,
+	0x12, 0xa1, 0x9c, 0xac, 0x3c, 0x19, 0x29, 0xa1, 0x9c, 0xfe, 0x5a, 0x8d, 0xae, 0x82, 0xfb, 0xf4,
+	0x88, 0x30, 0x62, 0x0a, 0xb8, 0x64, 0xb8, 0x6f, 0xa4, 0x4c, 0x3e, 0x28, 0x4a, 0x89, 0x6e, 0x82,
+	0x4f, 0x19, 0x26, 0x6c, 0x7c, 0x60, 0x7d, 0xb6, 0x4f, 0xe7, 0xae, 0x14, 0x6f, 0x3d, 0xbf, 0x73,
+	0x26, 0x6a, 0x53, 0xfd, 0x89, 0xba, 0xe0, 0xd1, 0xc9, 0xc4, 0xbe, 0xb2, 0xae, 0x3c, 0x4c, 0xaf,
+	0xd1, 0x05, 0x70, 0xb3, 0x74, 0x9a, 0xea, 0xe6, 0x95, 0x0a, 0xbd, 0x44, 0x37, 0xc0, 0xe7, 0x22,
+	0x66, 0x62, 0x1c, 0x0b, 0xf3, 0x7e, 0x96, 0x99, 0x2b, 0x18, 0xa7, 0x4c, 0x5a, 0x57, 0xc0, 0xa6,
+	0x40, 0x1f, 0x41, 0xc7, 0xb0, 0x13, 0x41, 0x98, 0x79, 0x37, 0x4f, 0xe0, 0xa0, 0x71, 0x89, 0xa0,
+	0x6b, 0xe0, 0x91, 0x1c, 0x4b, 0xdb, 0xfe, 0x62, 0xd8, 0x25, 0x39, 0xde, 0x14, 0xa8, 0x0f, 0x20,
+	0xb9, 0x03, 0x32, 0xa1, 0x8c, 0x98, 0x97, 0xf3, 0x04, 0x1b, 0x90, 0x1c, 0x6f, 0x29, 0x62, 0xcb,
+	0x07, 0x4f, 0x17, 0x34, 0xdc, 0x00, 0x4f, 0x27, 0x76, 0xae, 0xaf, 0x9c, 0x57, 0xf4, 0xd5, 0x3e,
+	0xb8, 0x2a, 0xc9, 0xe8, 0x2a, 0xb4, 0xca, 0x6e, 0x5a, 0xb4, 0x41, 0x69, 0xd1, 0x59, 0x68, 0xd0,
+	0x99, 0x79, 0xf5, 0x1a, 0x74, 0x86, 0x2e, 0x02, 0x54, 0xa3, 0xc2, 0x4c, 0xd4, 0xa0, 0x9c, 0x14,
+	0xe1, 0x3d, 0x68, 0x9b, 0xca, 0x9c, 0xd2, 0xfe, 0xfb, 0x10, 0xe0, 0x94, 0x91, 0xa4, 0xbc, 0xcc,
+	0x41, 0x54, 0x09, 0xc2, 0x6f, 0xc1, 0xd3, 0x19, 0x40, 0x9f, 0xe8, 0xc9, 0xc0, 0xf3, 0x78, 0xc6,
+	0x8f, 0xa8, 0x6d, 0x2f, 0x64, 0xff, 0x5b, 0x68, 0x32, 0x32, 0x9a, 0xa8, 0x83, 0xab, 0xc5, 0xf1,
+	0xc9, 0xd6, 0x38, 0x3e, 0xd9, 0xc2, 0x2f, 0xa1, 0x33, 0xb7, 0x19, 0xa1, 0x39, 0xa7, 0x03, 0xe3,
+	0xe2, 0xcb, 0xde, 0xff, 0xf0, 0x32, 0x04, 0x65, 0x48, 0xe8, 0x3c, 0xb8, 0x2a, 0xcb, 0xaa, 0x08,
+	0x41, 0xa4, 0x17, 0xe1, 0x8f, 0x0e, 0x40, 0xf5, 0x07, 0x84, 0x36, 0x21, 0x60, 0x84, 0xcf, 0x68,
+	0x2e, 0xef, 0xab, 0xae, 0xd6, 0x95, 0x85, 0x17, 0x51, 0xef, 0x89, 0x0c, 0x1b, 0x55, 0xbb, 0xd0,
+	0x87, 0x10, 0xd8, 0x44, 0xd8, 0x2b, 0x7f, 0xce, 0x5e, 0x34, 0x9b, 0x86, 0x8a, 0xa8, 0x5d, 0xdd,
+	0x66, 0xfd, 0xea, 0xfe, 0xe4, 0x80, 0x5f, 0x06, 0xbf, 0x0e, 0x2d, 0x4c, 0x13, 0xeb, 0xd4, 0xc5,
+	0x85, 0x4e, 0x95, 0xbf, 0x55, 0x0a, 0x45, 0x37, 0xa0, 0x9d, 0x1c, 0xc5, 0xf9, 0x21, 0x39, 0x3e,
+	0xd0, 0x06, 0x34, 0xd9, 0x56, 0x8a, 0xc8, 0x02, 0xe8, 0x53, 0x19, 0x78, 0x8c, 0xc7, 0xf2, 0x37,
+	0xde, 0xdc, 0xe6, 0x15, 0x7b, 0x86, 0xfd, 0xc7, 0xef, 0x3f, 0xb0, 0xff, 0xf8, 0x91, 0x2f, 0x61,
+	0xb9, 0x0c, 0xff, 0x72, 0x20, 0x28, 0xed, 0xa1, 0x0f, 0xa0, 0xf5, 0x7d, 0x9a, 0x63, 0x55, 0xa2,
+	0xb3, 0x1b, 0xef, 0x1c, 0x3f, 0xaf, 0x7f, 0x37, 0xcd, 0x71, 0xa4, 0x10, 0xb4, 0x06, 0x4d, 0x4c,
+	0x13, 0x33, 0x62, 0x5e, 0x11, 0x8f, 0x24, 0x65, 0xa9, 0x69, 0x86, 0xc7, 0x69, 0x8e, 0xc9, 0x33,
+	0xe5, 0xa2, 0x1b, 0xf9, 0x34, 0xc3, 0x3b, 0x72, 0x2d, 0x95, 0x39, 0x79, 0x6a, 0x94, 0x2d, 0xad,
+	0xcc, 0xc9, 0x53, 0xa5, 0x0c, 0xb7, 0xa0, 0x25, 0x0f, 0x46, 0xe7, 0x61, 0xf9, 0xee, 0xce, 0xfd,
+	0xc1, 0xf8, 0xe1, 0xfd, 0xd1, 0xde, 0x70, 0x7b, 0xe7, 0xd6, 0xce, 0x70, 0xb0, 0x7c, 0x06, 0x05,
+	0xe0, 0x6e, 0x0e, 0x06, 0xc3, 0xc1, 0xb2, 0x83, 0x3a, 0xd0, 0x8e, 0x86, 0xf7, 0x76, 0x1f, 0x0d,
+	0x07, 0xcb, 0x0d, 0xb4, 0x04, 0xfe, 0xbd, 0xdd, 0x81, 0xa6, 0x9a, 0x5b, 0xcf, 0xe0, 0x5a, 0x42,
+	0xa7, 0xd6, 0xcd, 0x24, 0xa3, 0x05, 0x9e, 0x73, 0x36, 0xa1, 0xf9, 0x84, 0xb2, 0x69, 0x9c, 0x27,
+	0xe4, 0xb7, 0x46, 0x78, 0x5b, 0x43, 0xdb, 0x0a, 0xba, 0x55, 0x42, 0x0f, 0x54, 0x32, 0xf6, 0x64,
+	0x36, 0x7f, 0x6f, 0xac, 0x6a, 0x68, 0x5f, 0x41, 0xfb, 0x25, 0xb4, 0xaf, 0xa0, 0xfd, 0xed, 0xca,
+	0xde, 0x81, 0xa7, 0xf2, 0xff, 0xf1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x20, 0xda, 0x92,
+	0x12, 0x0e, 0x00, 0x00,
 }
diff --git a/firestore/list_documents.go b/firestore/list_documents.go
index f056d77..af0d9cb 100644
--- a/firestore/list_documents.go
+++ b/firestore/list_documents.go
@@ -17,9 +17,9 @@
 import (
 	"context"
 
-	vkit "cloud.google.com/go/firestore/apiv1beta1"
+	vkit "cloud.google.com/go/firestore/apiv1"
 	"google.golang.org/api/iterator"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // DocumentRefIterator is an interator over DocumentRefs.
diff --git a/firestore/mock_test.go b/firestore/mock_test.go
index 3a8b9f0..7ae7c01 100644
--- a/firestore/mock_test.go
+++ b/firestore/mock_test.go
@@ -26,7 +26,7 @@
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes/empty"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/firestore/options.go b/firestore/options.go
index 84e35e9..ecc5dc0 100644
--- a/firestore/options.go
+++ b/firestore/options.go
@@ -20,7 +20,7 @@
 	"time"
 
 	"github.com/golang/protobuf/ptypes"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // A Precondition modifies a Firestore update or delete operation.
diff --git a/firestore/options_test.go b/firestore/options_test.go
index 999a0a6..e8d140d 100644
--- a/firestore/options_test.go
+++ b/firestore/options_test.go
@@ -17,7 +17,7 @@
 import (
 	"testing"
 
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func TestProcessPreconditionsForVerify(t *testing.T) {
diff --git a/firestore/order.go b/firestore/order.go
index c3f59ce..e5ee1e0 100644
--- a/firestore/order.go
+++ b/firestore/order.go
@@ -22,7 +22,7 @@
 	"strings"
 
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // Returns a negative number, zero, or a positive number depending on whether a is
diff --git a/firestore/order_test.go b/firestore/order_test.go
index ac8e06e..cb452b6 100644
--- a/firestore/order_test.go
+++ b/firestore/order_test.go
@@ -19,7 +19,7 @@
 	"testing"
 	"time"
 
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 )
 
diff --git a/firestore/query.go b/firestore/query.go
index ee544e1..16e258c 100644
--- a/firestore/query.go
+++ b/firestore/query.go
@@ -26,7 +26,7 @@
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/ptypes/wrappers"
 	"google.golang.org/api/iterator"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // Query represents a Firestore query.
diff --git a/firestore/query_test.go b/firestore/query_test.go
index 848c647..bf11e87 100644
--- a/firestore/query_test.go
+++ b/firestore/query_test.go
@@ -23,7 +23,7 @@
 	"cloud.google.com/go/internal/pretty"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/golang/protobuf/ptypes/wrappers"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func TestFilterToProto(t *testing.T) {
@@ -255,11 +255,11 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{refval(coll.parentPath + "/documents/C/foo")},
+					Values: []*pb.Value{refval(coll.parentPath + "/C/foo")},
 					Before: false,
 				},
 				EndAt: &pb.Cursor{
-					Values: []*pb.Value{refval(coll.parentPath + "/documents/C/bar")},
+					Values: []*pb.Value{refval(coll.parentPath + "/C/bar")},
 					Before: true,
 				},
 			},
@@ -312,7 +312,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -326,7 +326,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -341,7 +341,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_DESCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -356,7 +356,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{intval(7), intval(8), refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{intval(7), intval(8), refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -370,7 +370,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -385,7 +385,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -410,7 +410,7 @@
 					{Field: fref1("__name__"), Direction: pb.StructuredQuery_ASCENDING},
 				},
 				StartAt: &pb.Cursor{
-					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
+					Values: []*pb.Value{intval(7), refval(coll.parentPath + "/C/D")},
 					Before: true,
 				},
 			},
@@ -418,12 +418,12 @@
 	} {
 		got, err := test.in.toProto()
 		if err != nil {
-			t.Errorf("%s: %v", test.desc, err)
+			t.Fatalf("%s: %v", test.desc, err)
 			continue
 		}
 		test.want.From = []*pb.StructuredQuery_CollectionSelector{{CollectionId: "C"}}
 		if !testEqual(got, test.want) {
-			t.Errorf("%s:\ngot\n%v\nwant\n%v", test.desc, pretty.Value(got), pretty.Value(test.want))
+			t.Fatalf("%s:\ngot\n%v\nwant\n%v", test.desc, pretty.Value(got), pretty.Value(test.want))
 		}
 	}
 }
@@ -550,7 +550,7 @@
 	got := coll.Select("x").Offset(8)
 	want := Query{
 		c:            c,
-		parentPath:   c.path(),
+		parentPath:   c.path() + "/documents",
 		path:         "projects/P/databases/D/documents/C",
 		collectionID: "C",
 		selection:    []FieldPath{{"x"}},
diff --git a/firestore/to_value.go b/firestore/to_value.go
index 03236b2..72969fd 100644
--- a/firestore/to_value.go
+++ b/firestore/to_value.go
@@ -23,7 +23,7 @@
 	"cloud.google.com/go/internal/fields"
 	"github.com/golang/protobuf/ptypes"
 	ts "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 )
 
diff --git a/firestore/to_value_test.go b/firestore/to_value_test.go
index 2461102..182bd04 100644
--- a/firestore/to_value_test.go
+++ b/firestore/to_value_test.go
@@ -21,7 +21,7 @@
 	"time"
 
 	ts "github.com/golang/protobuf/ptypes/timestamp"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 )
 
diff --git a/firestore/transaction.go b/firestore/transaction.go
index 9b82ce4..5df4a2a 100644
--- a/firestore/transaction.go
+++ b/firestore/transaction.go
@@ -19,7 +19,7 @@
 	"errors"
 
 	gax "github.com/googleapis/gax-go/v2"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/firestore/transaction_test.go b/firestore/transaction_test.go
index 22873e8..4947814 100644
--- a/firestore/transaction_test.go
+++ b/firestore/transaction_test.go
@@ -20,7 +20,7 @@
 
 	"github.com/golang/protobuf/ptypes/empty"
 	"google.golang.org/api/iterator"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
@@ -101,7 +101,7 @@
 	srv.addRPC(beginReq, beginRes)
 	srv.addRPC(
 		&pb.RunQueryRequest{
-			Parent: db,
+			Parent: db + "/documents",
 			QueryType: &pb.RunQueryRequest_StructuredQuery{
 				&pb.StructuredQuery{
 					From: []*pb.StructuredQuery_CollectionSelector{{CollectionId: "C"}},
diff --git a/firestore/util_test.go b/firestore/util_test.go
index b655d37..7e58fcc 100644
--- a/firestore/util_test.go
+++ b/firestore/util_test.go
@@ -26,7 +26,7 @@
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
 	"google.golang.org/api/option"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 	"google.golang.org/grpc"
 )
diff --git a/firestore/watch.go b/firestore/watch.go
index 69af05b..1e854e3 100644
--- a/firestore/watch.go
+++ b/firestore/watch.go
@@ -26,7 +26,7 @@
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go/v2"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/firestore/watch_test.go b/firestore/watch_test.go
index 04dda0c1..b10abac 100644
--- a/firestore/watch_test.go
+++ b/firestore/watch_test.go
@@ -23,7 +23,7 @@
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go/v2"
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/firestore/writebatch.go b/firestore/writebatch.go
index 5ed3429..5efa231 100644
--- a/firestore/writebatch.go
+++ b/firestore/writebatch.go
@@ -18,7 +18,7 @@
 	"context"
 	"errors"
 
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 // A WriteBatch holds multiple database updates. Build a batch with the Create, Set,
diff --git a/firestore/writebatch_test.go b/firestore/writebatch_test.go
index ce374e1..0af8c88 100644
--- a/firestore/writebatch_test.go
+++ b/firestore/writebatch_test.go
@@ -18,7 +18,7 @@
 	"context"
 	"testing"
 
-	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
+	pb "google.golang.org/genproto/googleapis/firestore/v1"
 )
 
 func TestWriteBatch(t *testing.T) {
diff --git a/regen-gapic.sh b/regen-gapic.sh
index 063a864..73dedd4 100755
--- a/regen-gapic.sh
+++ b/regen-gapic.sh
@@ -92,6 +92,7 @@
 HASMANUAL=(
 errorreporting/apiv1beta1
 firestore/apiv1beta1
+firestore/apiv1
 logging/apiv2
 longrunning/autogen
 pubsub/apiv1